On Sunday, 23 August 2015 at 11:06:20 UTC, Russel Winder wrote:
On Sat, 2015-08-22 at 09:27 +0000, rsw0x via
Digitalmars-d-learn wrote:
[…]
The performance decrease has been there since 1.4 and there is
no way to remove it - write barriers are the cost you pay for
concurrent collection. Go was already much slower than other
compiled languages, now it probably struggles to keep up with
mono.
I know Walter hates it when people mention the word but:
benchmarks.
As soon as someone say things like "it probably struggles to
keep up with mono" further discussion of the topic is probably
not worth entertaining without getting some agreed codes and
running them all on the same machine.
I agree the standard Go compiler generates not well optimized
code, but
gccgo generally does, and generally performs at C-level speeds.
Of
course Java often performs far better than that, and often
fails to.
You have to be careful with benchmarking and performance things
generally.
https://groups.google.com/forum/#!msg/golang-dev/pIuOcqAlvKU/C0wooVzXLZwJ
25-50% performance decrease across the board in 1.4 with the
addition of write barriers, to an already slow language.
random benchmarks of Go performing 3x(+) slower than C/C++/D,
some of these predate Go 1.4.
https://github.com/kostya/benchmarks
https://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=all&lang=go&lang2=gcc&data=u64
https://togototo.wordpress.com/2013/07/23/benchmarking-level-generation-go-rust-haskell-and-d/
(gcc-go performed the _worst_)
https://togototo.wordpress.com/2013/08/23/benchmarks-round-two-parallel-go-rust-d-scala-and-nimrod/
(and again)
https://github.com/logicchains/LPATHBench/blob/master/writeup.md
(once again, Go is nowhere near C/C++/D/Rust. Where is it?
Hanging out with C#/Mono.)
Go is slow. These aren't cherrypicked, just random samples from a
quick Googling.
Where is Go performing "C-level speeds" at? D claims this, and D
shows it does. Go falls into the "fast enough" category, because
it is _not_ a general purpose programming language. So unless
multiple randomly sampled benchmarks are all wrong, I'm going to
stick with 'Go is slow.'