在VS2010中编译需要太长时间
Compilation in VS2010 takes too long
可能的重复项:
您使用了哪些策略来缩短大型项目的构建时间?
我在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秒似乎有点慢,但并不出格。
- 使用Boost Interprocess创建托管共享内存需要很长时间
- SFML RenderWindow打开窗口需要很长时间
- Kafka C++客户端需要很长时间才能收到消息
- 给定使用 C++ 或 C,我如何测量在 linux 下进行线程切换需要多长时间?可能吗?
- asio::read() 需要很长时间,使用 asio::write 没有问题
- 将线程锁定很长时间
- 正在等待在非阻塞文件描述符上长时间运行ioctl
- 即使长时间等待,C++线程也不会加入
- 连接() 在连接被拒绝时长时间挂起
- 为什么这段代码需要这么长时间才能用 g++ 编译?
- 如何在长时间运行的方法中等待信号?
- 编译我的C++代码需要很长时间
- Visual Studio C 枚举需要很长时间来编译
- 为什么编译超过100000行std::vector::push_back需要很长时间
- C++程序需要很长时间才能在Mac OSX终端上编译
- 在VS2010中编译需要太长时间
- 为什么我的简单cpp-netlib程序需要这么长时间才能编译
- 使用boost库编译预编译头文件需要很长时间
- 如果包括"assert.h"的每个文件都需要很长的编译时间吗?
- 有时VS2008需要很长时间才能编译