(+ now I see it's rust: how parallel is your build, really?)
Not the OP but I install a lot of Rust projects with Cargo and recently did some benchmarking on DigitalOcean's compute-optimized VMs. Going from 8 cores to 32 cores was a little disappointing:
Bat (~40 crates): 68s -> 61s
Nushell (486 crates): 157s -> 106s
Compilation starts out highly parallel and then quickly drops down to a small number of cores.
If the final x86 production build takes longer it doesn’t matter - that happens on the cloud anyway.
Edit: Rust builds are very parallel until linking. No different than any other LLVM build.
It matters when comparing CPU performance, which is what this benchmark is being used for.
Isn't linking IO-bound?
Does it, though?
I mean, if you read that link you'll notice it boasts the linker's performance by comparing it with cp and how it's "so fast that it is only 2x slower than cp on the same machine."
Is cp supposed to be CPU-bound?
https://llvm.org/devmtg/2017-10/slides/Ueyama-lld.pdf
There is a breakdown in those slides discussing what parts of lld are single threaded and hard to parallelize so I suspect single thread performance plays a big role too. I generally observe one core pegged during linking.
That would mean that these comparisons between Threadripper and the M1 Ultra do not reflect CPU performance but instead showcase whatever choice of SSD they've been using.
Why did you omit the reference to "file system"?
Are we supposed to ignore the fact that a linker's main job is reading object files and write the output to a file?
I find this sort of argument particularly comical given a very old school technique to speed up compilation is to use a RAM drive to store the build's output.
Just that with the same hot caches, the average change-build-test loop that developers do 100+ times a day is just faster on the M1 Max.
Curiosity got the better of me:
Our "world" build is slightly faster on my M1 Max.
https://twitter.com/kiratpandya/status/1457438725680480257
The 3990x runs a bit faster on the initial compile stage but the linking is single threaded and the M1 Max catches up at that point. I expect the M1 Ultra to crush the 3990x on compile time.