c#构建速度vs原生c++
本文关键字:原生 c++ vs 速度 构建 | 更新日期: 2023-09-27 18:05:55
是否有人对类似规模的c++和c#项目的构建时间进行过比较?
我们正试图说服我们的IT人员,一个数百万行的c++项目,大量的模板使用,比类似规模的c#项目更慢,花在内存和SSD磁盘上的额外钱是值得的。
我们正试图说服我们的IT人员,一个数百万行的c++使用大量模板的项目比类似的项目遵从速度慢c#项目的大小,以及在内存和SSD磁盘上花费的额外资金花得值。
这无疑是c++中一个常见且非常重要的问题。我认为这是下一个c++版本中最迫切需要修复的,也许是使用模块。这是一个语言设计问题,与c++编译单元的组织方式有关。
无论如何,通过使编译器更快来解决这个问题。目前最重要的工作是CLang。
关于编译时间的来源,有很多(google: unity build, c++编译时间)
但我认为示范会更好。以boost (http://boost.org)为例,编译它。它是一个很大的库集,所以它可以很容易地与c#中的大型代码源库进行比较。
关于使用ssd来促进c++编译,这里有一个研究:http://exdream.com/Blog/post/2009/05/03/Visual-Studio-compile-times-on-different-disk-drives-and-SSDs.aspx
但我相信,除非你在你的项目中使用Ngen.exe,否则所有的c#项目都是我们已经知道的2阶段编译过程。但是在c++中,它是一步编译(没有编译)。我猜在构建时间上有一点不同。也许Jon Skeet应该有一个完美的答案。
我从来没有在类似的项目上做过这样的比较,这里的"相似"可能意味着相同的行数。但是根据我的经验,我经常注意到c++的编译速度要慢得多。我想是因为它在编译过程中传递了更多的步骤,其中一个是链接,这可能会很慢。