Go devel compile times below 2x Go 1.4.3
groups.google.com
groups.google.com
In this particular case, the discussion is about a program that imports around 500 package dependencies and is compiling everything (as I understand it) from scratch, resulting in a binary that is around 90MB.
Yes. Go was nearly as bad as java and C++ in 2014, and it has gotten nearly twice as slow since then. And yet "compiler performance" is the excuse for not having generics. While C++ and java both have them and are now faster than go's compiler, and ocaml is way faster and has them.
Please do provide them.
The notion that Go's compiler is slower than C++ is ridiculous. Go's compiler, despite the recent slowdown, is still famously fast, whereas C++'s notorious header file problem means that even small changes can trigger huge recompiles (which is exacerbated by the fact that templates must often have their implementation code in the header file, not the implementation file).
Meanwhile, Rust's compiler is much, much slower than Go's, and probably not much faster than GCC/Clang with C++.
Sure, the Nim post includes compile times, but no information about benchmarking methodology; warm caches? How many runs? Percentiles? etc. Also, the program being tested is just a few dozen lines (75 in Go, 73 in C++). Not exactly exercising compilation speed here.
The burden is on you to provide evidence, since it is your claim. Likewise, benchmarks to support the claim that OCaml's compiler is faster.
I develop in Go daily, and nothing I've seen indicates that Go is anywhere close to approaching C++ in compilation slowness. (I have also worked extensively with C++.)
No it is not. A reproducible test is evidence, not anecdote.
>At best it's an indication that all compilers have some startup overhead, some more or less than others. Based on JVM startup time alone, I could "prove" that Java was the slowest language in the world.
That seems unlikely since we just saw otherwise.
>The burden is on you to provide evidence, since it is your claim
And I did. Dismissing it because it does not fit your preconceptions does not mean I need to continue supplying more and more evidence for you to dismiss without any justification.
>I develop in Go daily, and nothing I've seen indicates that Go is anywhere close to approaching C++ in compilation slowness. (I have also worked extensively with C++.)
Now that is an anecdote.
The compile times are only shown in the Nim board comment, not the Github page, which doesn't benchmark compilation times. Again, where did the numbers come from?
Secondly, again, it was for a ~70-line program. Do you seriously think that benchmarking the compilation of a 70-line program is statistically valuable? It's ridiculous.
You completely missed the point of my JVM comment. Actually, I'm going to assume you're trolling. I'll stop here.
Repeating that will not make it so. The code is available, it is fully documented and reproducible. That is not an anecdote.
>The compile times are only shown in the Nim board comment, not the Github page, which doesn't benchmark compilation times. Again, where did the numbers come from?
So? Evidence does not become anecdote simply because you dislike the source. It doesn't need to be on github. It is where it is because the person who did it put it there.
>Secondly, again, it was for a ~70-line program. Do you seriously think that benchmarking the compilation of a 70-line program is statistically valuable?
If you want to make the argument that it is weak evidence then do so. But your insistence on dishonestly claiming evidence is anecdote is not constructive.
>You completely missed the point of my JVM comment
No I did not, I pointed out that it is nonsense.
>Actually, I'm going to assume you're trolling. I'll stop here.
The laziest cop out possible. Baseless "troll" accusations do not belong in real conversations. Make an effort to contribute.
> since gri's switched to making binary export/import the default, and a few followups from khr the time to build jujud compared to 1.4.3 is now solidly below 2x
If anyone else is curious like I was, I believe this is referring to a recent Go change [1] which was previously discussed on HN [2].
However, I can't find the corresponding commit in the Juju repo.
[1] https://github.com/golang/go/commit/af6aa0fd745d48c2db70712e...
[0] https://github.com/golang/go/commit/7538b1db8ec0d82a623847fe...
Compiling a C or C++ project with 512 translation units would probably take enough time to prepare a full meal.