大型项目的C#编译时间(与C++相比)

Dim*_* C. 14 c#

我经常听到人们称赞C#的编译速度.到目前为止,我只做了一些小应用程序,实际上我注意到编译速度非常快.但是,我想知道这是否适用于大型应用程序.大型C#项目的编译速度是否比类似大小的C++项目快?

gri*_*ner 10

是的,C#通常编译速度更快.虽然并不总是足够快.我最大的C#代码库可能有一百万行代码和大量项目需要大约一个小时来编译.但我怀疑这段时间大部分是由于视觉工作室构建系统不佳.另一方面,编译C++的时间通常要长得多,但也更依赖于组织代码的方式.对头文件依赖性的不良处理可以轻松地将编译时间增加几个数量级.

  • +1用于评论糟糕的头文件处理 - 我们通过整理头文件在我们的大型C++项目上从1小时到8分钟下降! (4认同)

Ian*_*ose 6

C++的编译速度很慢,因为每次包含头文件时都必须重新读取和重新编译.由于"#defines"的工作方式,编译器很难自动预编译所有头文件.(Modula-2做得更好)对于每个编译的C++文件,读取100个标头在很多C++项目中是正常的.

有时,增量c ++编译比C#快得多.如果你的所有C++头文件(和设计)处于非常好的状态(参见大型C++软件设计,有效C++等书)你可以改变大多数系统使用的类的实现并且只有一个dll重新编译.

由于C#在您更改类的植入时没有单独的头文件,因此即使类的公共接口没有更改,也会重新编译该类的所有用法.这可以通过使用"基于接口的编程"和"依赖注入"等在C#中减少.但它仍然是一个痛苦.

但总的来说,我发现C#编译得足够快,但是大型C++项目的编译速度很慢,我发现自己不想因为重建时间而将方法添加到"基类".

拥有大量Visual Studio项目,每个项目中都有少量类可以减慢C#构建速度.将相关项目组合在一起然后"信任"开发人员不使用对命名空间私有的类有时可以带来很大的好处.(nDepends可用于检查违反规则的人)

(当试图加速C++编译时,我发现FileMon非常有用.我工作的一个项目,STL被添加到头文件中,构建速度慢得多.只需将STL添加到预编译头文件就可以了!因此,跟踪您的构建时间并调查它何时变慢


Mic*_*ael 5

据我所知,是的,C#比C++项目编译速度快得多.即使是大型应用.

这可以通过以下事实来解释:C#作为一种语言比C++更简单,并且C#被转换为IL(可以在以后对机器代码进行优化和翻译)并且C++立即转换为机器语言.