VS2010中的编译耗时太长

时间:2012-06-20 16:36:13

标签: c++ visual-studio-2010

  

可能重复:
  What strategies have you used to improve build times on large projects?

我在C ++中完成了大约800行编码,cpp文件有7-8个类,同样没有对象,但程序需要7秒才能构建。这是我在c ++中的第一个程序,所以我想知道它是否正常?还是它的方式太多了?另外,如果有c ++专家的人可以分享一些有助于初学者的见解,那真的很棒。 如果它以任何方式帮助我使用Visual Studio 2010。

2 个答案:

答案 0 :(得分:3)

编译C ++的时间可能比我用过的任何其他语言都要多。

可以产生重大影响的一件事是你所包含的标题。即使您的代码可能只有800行,如果其中一些是#include,编译器可能很容易查看数千行(仅供参考,#include <windows.h> ,通常意味着编译器将查看超过10,000行。

我们在C ++聊天室中的一些人最近在一个特别讨厌的代码上做了一些测试,这些代码有很多递归模板。即使它只有大约30行代码,根据你设置的参数,很容易编译一小时或更长时间的编译 - 对于大多数编译器(包括VC ++ 10和11/2012),它很容易彻底崩溃了编译器。

如果代码对标题和/或模板(特别是递归模板等)的方式很少或没有,那么编译7.5秒似乎相当过分。为了比较,我做了一个快速测试,编译了一个我躺在那个接近相同大小(926行)的程序。这需要0.3秒。我的机器就像5年或6年一样,所以它的速度甚至不是关闭到最前沿。同时,我应该补充一点,为了编译少量的代码,CPU速度可能不是主要的决定因素。我希望SSD能够比更快的CPU产生更大的差异。

答案 1 :(得分:0)

C ++是一种复杂的语言,需要比其他语言更多的时间来编译。最重要的是Visual Studio本身有额外的开销来构建Intellisense数据库等。在实际编译之后还需要考虑一个链接阶段。

当Visual Studio创建新项目时,它通常会创建一个包含大量Windows头文件的预编译头。这将为您的800行源添加数千行。

7秒看起来有点慢,但没有脱节。