我用 Google 搜索并浏览了 Go 网站,但找不到对 Go 非凡构建时间的解释。它们是语言特性(或缺乏特性)、高度优化的编译器还是其他东西的产物?我不是要推广 Go;我只是好奇。
原文由 Evan Kroske 发布,翻译遵循 CC BY-SA 4.0 许可协议
我用 Google 搜索并浏览了 Go 网站,但找不到对 Go 非凡构建时间的解释。它们是语言特性(或缺乏特性)、高度优化的编译器还是其他东西的产物?我不是要推广 Go;我只是好奇。
原文由 Evan Kroske 发布,翻译遵循 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 许可协议
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答888 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.6k 阅读✓ 已解决
依赖分析。
Go 常见问题解答 曾经包含以下句子:
虽然该短语不再出现在 FAQ 中,但 在 Google 的 Go 演讲中详细阐述了该主题,该演讲比较了 C/C++ 和 Go 的依赖分析方法。
这是快速编译的主要原因。这是设计使然。