如何在大型C++项目中检测编译时的瓶颈?

P-P*_*P-P 21 c++ compiler-optimization visual-studio-2008 visual-studio

我想减少大型C++项目的编译时间.我尝试使用预编译的头文件,接口等.但在我继续之前,我想知道是否有任何工具可以帮助检测为什么编译时间如此之长.有人建议使用pc-lint,我会试一试. 如何在大型C++项目中检测不必要的#include文件? 但是,如果有其他工具可以分析编译时间并讨论任何提高编译速度的提示,请告诉我.提前致谢.

环境:Microsoft Visual Studio C++ 2008或2010.

jus*_*tin 5

我喜欢的一种方法是查看一些源的预处理器输出 - 只是从编译器的角度阅读其中的一些,而不是有点抽象的表示,即#inclusion.你可能会发现一些你不需要的大块包含/库,并且不一定知道依赖/包含的存在(或需要).从那里,决定可以删除哪些依赖项.即使你的依赖关系都是正确的,大输出也可以建议你如何更大的模块分成更小的部分.


iam*_*ind 3

我不知道有什么工具可以改善编译时间,但我可以建议一些手动补救措施(将其视为评论):

  1. 每个头文件都有#include保护,这样多次包含就不会产生任何问题
  2. 减少成员函数体,内联函数体直接放入头文件中;只是有他们的声明
  3. 检查是否有不必要的template函数和类;请记住,模板已成为inline默认设置。太多的模板/元编程会导致巨大的编译时间。
  4. 如果#defines 的数量不必要地高,那么它们会增加预处理阶段,最终增加编译时间