18 ms·
It's much faster than C++, Rust, Go and many others.
by nimmer 4y ago
It's much faster than C++, Rust, Go and many others.
- zimpenfish 4y agoI'm assuming this must be for huge projects? I just compiled my toy project (detecting anomalous parity in integers) in nim 1.6.6 (4.23s), go 1.17.7 (2.43s to create both aarch64 and x86_64 binaries), zig 0.8.0-dev.1140 (2.04s to create aarch64 and x86_64 binaries) and C via clang 13.1.6 (0.14s). nim's compilation is 175% of Go, 207% of zig, and 3021% of clang.
- nimmer 4y agoNo, even small files. You must have issues with your setup. Are you sure your compiler is not built in debug mode?
- zimpenfish 4y agoHow would I check that? I installed it through homebrew via https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/nim.rb https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/... which doesn't seem to mention debug mode anywhere?
- dom96 4y agoRun `nim -v`, if it's not in debug mode you should see "active boot switches: -d:release".
- zimpenfish 4y agoLooks like it isn't in debug mode after all. $ nim -v Nim Compiler Version 1.6.6 [MacOSX: arm64] Compiled at 2022-05-05 Copyright (c) 2006-2021 by Andreas Rumpf active boot switches: -d:release -d:nimUseLinenoise
- Rochus 4y agoThanks for the data; that's what I call an elegant rebuttal.
- machinekob 4y agohow are u compiling (optimization, custom compilation flags etc.?) In my case https://github.com/mratsim/Arraymancer https://github.com/mratsim/Arraymancer big project compile under your 4.2s so or you have like 10k+ lines of codes with macros or you just pass some debug flags to compiler :D
- zimpenfish 4y agoCompilation command is: nim c -d:release --passC:"-flto" --gc:markAndSweep --out:ap ap.nim I will add that once it's been run a few times, it does go a bit quicker (down to ~0.7s) but the Go also gets quicker (down to 0.28s for two outputs when files are cached.)
- hahaitsfunny 4y agoNo, it is not - Nim's compiler backend is extremely complex and full of cruft. I've been around Nim for 7+ years now and there's a reason the compiler was hard forked. Nim's compiler is definitely not speedy, and this is why so much effort has been spent on incremental compilation, which tmk, still isn't working - https://github.com/nim-lang/Nim/issues/19757 https://github.com/nim-lang/Nim/issues/19757.