3 ms·
That's not a big offense to Scala, honestly. It's easy to be worse than Rust. Rustc in my experience is an extremely well optimized compiler, only second to Go
by pkolaczk 2y ago
That's not a big offense to Scala, honestly. It's easy to be worse than Rust.
Rustc in my experience is an extremely well optimized compiler, only second to Go. It beats pure Java with Maven / Gradle as well. It gets bad reputation because Rust projects are compiled fully from source, so Rustc has usually like 100x more code to compile than in languages which use binary dependencies.
fclones is ~500k LOC gross with all dependencies.
Takes 9 seconds to cold compile with linking on my machine.
I haven't used Scala for a while but last time we used it (Scala 2.12 + gradle) the compile times were just abysmal. A project containing just about 20k lines of Scala + some Java took over 5 minutes to build, and incremental compilation didn't work at all (probably due to Gradle not understanding Scala dependencies).
- gf000 2y ago> It beats pure Java with Maven / Gradle as well. I don't think that checks out. Java's compilation is ridiculously fast. https://mill-build.org/blog/1-java-compile.html https://mill-build.org/blog/1-java-compile.html According to this, javac itself can compile up to 100k lines per second, while Maven/Gradle is an order of magnitude slower. The only info I found for Rust mentions something along the 5k lines/second mark (on a different computer), but it is at most roughly the same, if not slower than a java build tool.
- pkolaczk 2y agoJava compilation may be ridiculously fast, but maven/gradle makes it crawl. > The only info I found for Rust mentions something along the 5k lines/second mark (on a different computer) On Pentium III? Let's see how it performs on M3 Pro: cargo loc --filter-platform=aarch64-apple-darwin ... Total lines: 961318 (783408 code, 77484 comments, 100426 blank lines) cargo clean cargo build Compiling libc v0.2.155 Compiling autocfg v1.1.0 Compiling cfg-if v1.0.0 Compiling proc-macro2 v1.0.69 Compiling unicode-ident v1.0.12 Compiling memchr v2.6.4 ... Compiling dtparse v2.0.0 Compiling fclones v0.35.0 (/Users/piotr/Projects/fclones/fclones) Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.75s Looks like it is about 80k LOC/s. Not bad. If pure javac can also do 100k LOC/s (which is definitely something I believe is possible) but then "Maven/Gradle is an order of magnitude slower" then my point stands. No-one uses pure javac to compile big projects.
- vips7L 2y agoNow do an optimized build.