我注意到在同一台机器上,C#的编译时间远远少于C++.为什么?
注1:我没有做过任何科学基准.
注意2:在有人说这与编程无关之前,我正在实现一个解析器,我发现我可以从get get中做些什么来提高编译速度.
注3:我有一个类似的问题为什么汇编需要这么长时间?.这个问题询问了从C/C++到C#的具体差异.很明显,简单的语言编译比复杂的语言更快,但C和C#都是复杂的语言.
我的内容:1)C/C++从预处理器和头文件中缓慢.2)很多标头会导致更多的数据被解析.特别是当每个文件都可以使用预处理器时可以更改代码3)C#推迟一些编译到程序启动4)IL指令很简单,机器不是
看一下这篇文章:为什么C++编译需要这么长时间?
需要考虑两个独立的问题 - 处理阶段的数量以及定位的复杂性.
典型的C++编译涉及许多阶段(尽管这些阶段可以并发运行),其中预处理器处理指令和宏,然后C++编译器本身处理生成的代码.预处理器生成明显更大的输出,所有需要由实际编译器解析和处理的代码是很常见的.
此外,请记住,C++编译器将针对x86或x64机器语言 - 预先处理所有优化,并尝试充分利用在OO样式开发时未真正优化的硬件.
相比之下,C#编译器的目标是微软中间语言(MSIL),这是一个更高级别的机器代码平台,旨在用于OO开发.C#提供的许多构造都直接映射到IL指令,使编译变得非常简单.优化和其他活动的公平推迟推迟到实际程序启动,此时它针对确切的可用机器进行了优化.