为什么C#编译比C ++快得多?

我注意到在同一台机器上,它比C ++花费的时间少得多。 为什么?

注1:我还没有做过任何科学基准。

注2:在任何人说这不是编程相关的,我正在实现一个解析器,我发现我可以从得到去增加编译速度。

注3:我有类似的问题编辑为什么需要这么长时间? 这个问题是关于从C / C ++到C#的具体差异。 很显然,一种简单的语言比一种复杂的语言编译起来更快,但C和C#都是复杂的语言。

我的外卖:1)C / C ++从预处理器和头文件中获得SLOW。 2)很多头文件导致更多的数据解析。 特别是当每个文件都可以使用预处理器时可以更改代码3)C#推迟一些编译到程序启动4)IL指令很简单,机器不是


看看这篇文章:为什么C ++编译需要这么长时间?


有两个独立的问题需要考虑 - 处理阶段的数量和目标的复杂程度。

典型的C ++编译涉及预处理器处理指令和宏的许多阶段(尽管这些阶段可以同时运行),然后C ++编译器自己处理结果代码。 预处理器生成更大的输出是非常常见的,所有需要由实际编译器解析和处理的代码。

另外,请记住,C ++编译器将针对x86或x64机器语言 - 预先处理所有优化,并尝试充分利用在面向对象风格开发时并未真正优化的硬件。

相比之下,C#编译器的目标是Microsoft中间语言(MSIL),这是一种旨在用于OO开发的更高级别的机器代码类平台。 C#提供的许多构造直接映射到IL指令中,使编译变得非常简单。 大量的优化和其他活动被推迟到实际程序启动之前,此时它已针对确切可用的机器进行了优化。


因为C ++编译为机器码,而C#则是字节码。 你第一次启动.NET程序时是否注意到了滞后性? 这是字节码被JITed(编译成机器码)的时候。

链接地址: http://www.djcxy.com/p/14963.html

上一篇: Why does C# compile much faster than C++?

下一篇: Difference between C++ and Java compilation process