【发布时间】:2011-02-11 20:42:15
【问题描述】:
正如我们在 2010 年从 The Computer Language Benchmarks Game 看到的那样:
记住 Go 编译器会生成用于执行的本机代码,这怎么可能?
Go 的不成熟编译器?还是 Go 语言存在一些内在问题?
编辑:
大多数答案否认 Go 语言的内在缓慢,声称问题出在不成熟的编译器中。
因此,我做了一些自己的测试to calculate Fibonacci numbers:迭代算法在 Go (freebsd,6g) 中运行,same 速度与 C 中一样(使用 O3 选项)。枯燥的递归在 Go 2 times 中运行比在 C 中慢(使用 -O3 选项;使用 -O0 - 相同)。但我还没有看到像基准游戏中那样下降 10 倍。
【问题讨论】:
-
公平地说,C 是伪装的 ASM,而 Java 近来在底层进行了一些重要的优化。
-
也许基准测试也不能反映 Go 的优势。可能其他基准测试实际上比这更快。此外,通常最重要的不是性能,而是代码的可读性。
-
@extraneon:我同意。请记住,Go 是为 Google 设计的,Google 通常会在 2 百万 个内核上运行代码。我相信 Benchmarks Game 只使用了 4 个内核。
-
@extraneon:我总体上同意,但 Go 在设计时特别考虑了速度,例如,“生成的程序运行速度几乎与可比较的 C 或 C++ 代码一样快。”
-
您的问题假设太多:“大多数答案否认 Go 语言的内在缓慢”是在问题中使用的错误短语。你有问题要问,或者要发表声明吗?请参阅c2.com/cgi/wiki?HostileStudent 以了解您的错误。
标签: java performance go benchmarking