我搜索了Go的网站,但我似乎找不到Go非凡的构建时间的解释。它们是语言特性(或缺少语言特性)、高度优化的编译器还是其他东西的产物?我不是想推广Go,我只是好奇。
发布于 2010-06-05 02:17:23
依赖分析。
用于包含以下语句的Go FAQ:
Go为软件构建提供了一个模型,该模型使依赖分析变得容易,并避免了许多C风格的包含文件和库的开销。
虽然这个短语不再出现在常见问题解答中,但这个主题在talk Go at Google中得到了详细阐述,它比较了C/C++和Go的依赖分析方法。
这是快速编译的主要原因。这是设计出来的。
发布于 2010-06-09 00:09:39
我认为这并不是因为Go编译器很快,而是其他编译器很慢。
C和C++编译器必须解析大量的头文件--例如,编译C++ "hello world“需要编译18k行代码,这几乎是0.5兆字节的源代码!
$ cpp hello.cpp | wc
18364 40513 433334Java和C#编译器在VM中运行,这意味着在它们可以编译任何东西之前,操作系统必须加载整个VM,然后必须将它们从字节码即时编译为本机代码,所有这些都需要一些时间。
编译的速度取决于几个因素。
有些语言被设计成可以快速编译。例如,Pascal被设计为使用单遍编译器进行编译。
编译器本身也可以优化。例如,Turbo Pascal编译器是用手工优化的汇编器编写的,与语言设计相结合,得到了一个在286级硬件上工作的非常快速的编译器。我认为即使是现在,现代的Pascal编译器(例如FreePascal)也比Go编译器更快。
发布于 2011-12-30 05:07:02
Go编译器比大多数C/C++编译器快的原因有很多:
https://stackoverflow.com/questions/2976630
复制相似问题