在VS2010中编译需要太长时间

Compilation in VS2010 takes too long

本文关键字:长时间 编译 VS2010      更新时间:2023-10-16

可能的重复项:
您使用了哪些策略来缩短大型项目的构建时间?

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

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

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

我们几个人在C++聊天室最近对一段特别讨厌的代码进行了一些测试,该代码有很多递归模板。尽管它只有大约 30 行代码,但根据您设置的参数,很容易获得一个小时或更长时间的编译时间 - 并且对于大多数编译器(包括 VC++10 和 11/2012),编译器很容易直接崩溃。

如果代码在标头和/或模板(尤其是递归模板之类的东西)方面很少或根本没有,那么 7.5 秒的编译时间似乎相当多。为了进行比较,我做了一个快速测试,编译了一个我躺在周围的程序,它的大小接近相同(926行)。这花了0.3秒。我的机器大概有 5 或 6 年的历史,所以它的速度甚至没有接近尖端。同时,我应该补充一点,对于编译如此少量的代码,CPU 速度可能不是主要的决定因素。我希望SSD比更快的CPU产生更大的差异。

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

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

7秒似乎有点慢,但并不出格。