为什么go语言这么慢?

从我们可以看到从The Computer Language Benchmarks Game

> Go的平均速度比C慢10倍
> Go是比Java慢3倍?

这怎么可能,记住Go编译器生成本地代码执行?
不成熟的编译器去?或者Go语言有一些内在的问题?

编辑:
大多数答案否认Go朗读的内在慢性,声称问题存在于未成熟的编译器。
因此,我做了一些自己的测试to calculate Fibonacci numbers:迭代算法运行在Go(freebsd,6g)以与C(与O3选项)相同的速度。愚钝的递归运行在Go中比在C中慢2倍(使用-O3选项;与-O0相同)。但我还没有看到10x秋天如基准游戏。

6g和8g编译器没有特别优化,所以它们生成的代码不是特别快。

它们被设计为自己运行得快,并产生代码可以(有一点优化)。 gccgo使用GCC的现有优化传递,并可能提供与C的更有意义的比较,但gccgo还不是功能完整。

基准数字几乎完全与实施质量有关。它们与语言本身没有很大的关系,除非实现需要运行时支持基准测试并不需要的语言特性。在大多数编译语言中,一个足够聪明的编译器可以在理论上去除不需要的东西,但是有一个地方你正在操纵演示,因为很少真正的语言用户会编写没有使用该特性的程序。移动东西而不完全删除它们(例如,在JIT编译的Java中预测虚拟调用目标)开始变得棘手。

FWIW,当我看看它(基本上是一个整数加法的循环)时,我自己对Go的非常微不足道的测试,gccgo产生代码到gcc -O0和gcc -O2之间的范围的快速结束对等效C.不是固有的慢,但编译器不做一切,但。十分惊人的语言是10分钟老。

翻译自:https://stackoverflow.com/questions/2704417/why-is-go-language-so-slow

转载注明原文:为什么go语言这么慢?