6g和8g编译器并不是特别优化,因此它们生成的代码并不是特别快。
它们旨在快速运行自己并生成可以的代码(有些优化)。
gccgo使用GCC的现有优化遍历,并可能与C进行更有意义的比较,但是gccgo尚未完成功能。
基准数字几乎完全与执行质量有关。它们与这种语言没有太多关系,除非实现花费了运行时支持基准测试实际上不需要的语言功能。从理论上讲,在大多数编译语言中,足够聪明的编译器可以剔除不需要的内容,但是您到了要演示的地方,因为很少有真正的语言用户编写不使用该功能的程序。
。将事情移开而不完全删除它们(例如,在JIT编译的Java中预测虚拟调用目标)开始变得棘手。
FWIW是我自己用Go进行的非常琐碎的测试(基本上是整数加法循环),gccgo朝着介于C
gcc -O0和
gcc -O2C
之间的范围的高端输出了代码。Go 并不是天生就很慢,但是编译器还不能做所有事情。对于10分钟的语言来说,这不足为奇。



