大型项目的C#编译时间(与C#x2B;+;)

大型项目的C#编译时间(与C#x2B;+;),c#,C#,我经常听到人们称赞C#的编译速度。到目前为止,我只开发了几个小应用程序,而且我确实注意到编译速度非常快。然而,我想知道这是否仍然适用于大型应用程序。大C项目比C++的项目大小更快吗?< p>,从我的经验来看,是的,C编译速度比C++项目快很多。即使对于大型应用程序也是如此 这可以解释为C语言比C++复杂得多,C语言被翻译成IL(可以被优化并翻译成机器代码),C++被立即翻译成机器语言。 < P>是的,C通常编译得快很多。但并不总是足够快。我最大的C#代码库可能有一百万行代码,有很多项目,编译大约

我经常听到人们称赞C#的编译速度。到目前为止,我只开发了几个小应用程序,而且我确实注意到编译速度非常快。然而,我想知道这是否仍然适用于大型应用程序。大C项目比C++的项目大小更快吗?

< p>,从我的经验来看,是的,C编译速度比C++项目快很多。即使对于大型应用程序也是如此

<>这可以解释为C语言比C++复杂得多,C语言被翻译成IL(可以被优化并翻译成机器代码),C++被立即翻译成机器语言。

< P>是的,C通常编译得快很多。但并不总是足够快。我最大的C#代码库可能有一百万行代码,有很多项目,编译大约需要一个小时。但我怀疑大部分时间是由于视觉工作室糟糕的构建系统造成的。
另一方面,C++的编译时间通常要长得多,但也更依赖于如何组织代码。头文件依赖关系的处理不当很容易增加编译时间,其数量级可以达到几个数量级。

C++编译速度太慢,因为每次包含头文件时都必须重新读取和分析它们。由于“#定义”的工作方式,编译器很难自动预编译所有头文件。(Muldia-2做了更好的工作),在编译C++程序时,每个C++文件读取的头数为100s,在很多C++项目中是正常的。 有时候,增量C++编译可以比C语言快很多。如果你的C++头文件(和设计)处于非常好的状态(见类似的书),你可以对系统中大多数系统使用的一个类的实现进行更改,并且只有一个DLL重新编译。 由于C#在更改类的植入时没有单独的头文件,因此即使类的公共接口没有更改,也会重新编译该类的所有使用。在C#中,通过使用“基于接口的编程”和“依赖注入”等方法可以减少这一点,但这仍然是一个难题

但是,总体上我发现C编译得足够快,但是大型C++项目编译速度太慢,我发现自己不想在重建时添加一个方法给“基类”。 有很多VisualStudio项目,每个项目中都有几个类,这会大大降低C#构建的速度。将相关项目组合在一起,然后“信任”开发人员不使用命名空间专用的类,有时会带来很大的好处。(可用于检查是否有人违反规则)


(当试图加快C++编译时,我发现Fielimon非常有用。我所做的一个项目,STL被添加到一个头文件中,并且构建速度慢了很多。只需将STL添加到预编译头文件中就有很大的区别!因此,跟踪您的构建时间并研究何时它会变得更慢)

也是我观察到C++比C++更显著的编译速度。其中一个主要原因当然是C#中的模板不需要在标题中,因为没有标题。但是大量使用模板(主要是任何像C++一样的Boost C++库)都会扼杀C++中的编译时间。

我也同样感到好奇。我在C语言中编译了一个小程序,编译速度比C++快得惊人。我已经研究过一个解决方案,它有超过40个项目(我没有创建),花费了很长时间(大约1分钟)来编译PIV。将我的PC升级到Core2可以将它缩短到一个更容易接受的时间,就像将代码重构成更少的项目一样。有很多项目会影响C++项目的编译时间。+ 1评论糟糕的头文件处理-我们通过将头文件排序掉,从1个小时到8分钟在我们的大型C++项目上下降!1用于指出当您仅更改库的实现时,依赖项目需要重建的C#问题。C++在清楚地将接口与实现分离方面做得更好,这实际上使它更适合于大型项目。依赖注入只是一种变通方法,因为它强制以兼容的方式重写整个代码库,也就是说,它是入侵性的。我们将以多大的数量级进行迁移?一个大项目的构建需要1秒,10秒,100秒?