Go 是如何快速编译的?

新手上路,请多包涵

我用 Google 搜索并浏览了 Go 网站,但找不到对 Go 非凡构建时间的解释。它们是语言特性(或缺乏特性)、高度优化的编译器还是其他东西的产物?我不是要推广 Go;我只是好奇。

原文由 Evan Kroske 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 484
2 个回答

依赖分析。

Go 常见问题解答 曾经包含以下句子:

Go 为软件构建提供了一个模型,它使依赖分析变得容易,并避免了 C 风格包含文件和库的大量开销。

虽然该短语不再出现在 FAQ 中,但 在 Google 的 Go 演讲中详细阐述了该主题,该演讲比较了 C/C++ 和 Go 的依赖分析方法。

这是快速编译的主要原因。这是设计使然。

原文由 Igor Krivokon 发布,翻译遵循 CC BY-SA 4.0 许可协议

我认为不是 Go 编译器 _快_,而是其他编译器 _慢_。

C 和 C++ 编译器必须解析大量的头文件——例如,编译 C++ “hello world” 需要编译 18k 行代码,这几乎是半兆字节的源代码!

 $ cpp hello.cpp | wc
  18364   40513  433334

Java 和 C# 编译器在 VM 中运行,这意味着在它们可以编译任何东西之前,操作系统必须加载整个 VM,然后它们必须从字节码到本地代码进行 JIT 编译,所有这些都需要一些时间。

编译速度取决于几个因素。

有些语言旨在快速编译。例如,Pascal 被设计为使用单遍编译器进行编译。

编译器本身也可以优化。例如,Turbo Pascal 编译器是用手工优化的汇编器编写的,它与语言设计相结合,产生了一个在 286 级硬件上运行的非常快的编译器。我认为即使是现在,现代 Pascal 编译器(例如 FreePascal)也比 Go 编译器更快。

原文由 el.pescado - нет войне 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏