Go 1.5的自举编译器比用C编写的Go 1.4编译器慢吗?

use*_*722 2 compiler-construction programming-languages go

Go 1.5设法发布一个用Go编写的自举编译器.假设Go比C慢,而早期的Go编译器是用C编写的,那么自举编译器在编译时会变慢吗?

two*_*two 7

是的,Go 1.5编译器速度较慢,如发行说明中所述:

Go 1.5中的构建将慢大约两倍.编译器和链接器从C到Go的自动转换导致了与编写良好的Go相比表现不佳的单一Go代码.分析工具和重构有助于改进代码,但仍有许多工作要做.Go 1.6和未来版本将继续进行进一步的分析和优化.有关详细信息,请参阅这些幻灯片和相关视频.

同样,编译器(最初)自动翻译,因此在翻译之后它输出与以前相同的代码:由于编译器的原因,程序并不慢.发行说明的其余部分和上面的链接揭示了更多的亮点.除了编译速度之外还有其他考虑因素:作者打算在Go中比在C中更快地移动.

我建议升级:开源代码将依赖于1.5,如果你留下来,你会失去许多很酷的东西,比如将大部分工作推到后台的GC延迟大幅减少(也在上面链接的性能部分;我写了一些关于它的更多回应另一个问题).

与任何大型升级一样,您应该进行测试,以确保使用所有可用内核的新默认值,调度调整或任何小库行为更改都不会让您感到困惑.