我有一段C++代码,使用VC7编译需要很长时间。有没有办法对它进行分析,找出为什么编译需要那么长时间?
在Visual Studio 2008中,有一个设置可以打开构建时间。在VC7中可能也有这个设置...
工具
/ 选项
/ 项目和解决方案
/ VC++项目设置
/ 构建时间:
是
这适用于C++项目,因为(截至VS2008)它们不使用MSBuild。对于基于MSBuild的项目(例如C#),您需要增加详细程度:
工具
/ 选项
/ 项目和解决方案
/ 生成和运行
/ MSBuild项目生成输出详细程度
默认情况下,它设置为“最小”。
/timetrace
到它的vcperf中,允许你对构建进行分析,并以火焰图的形式在任何基于Chromium的浏览器中可视化特定组件的构建时间。vcperf
,你需要执行以下步骤:
vcperf /start SessionName
vcperf /stop SessionName /timetrace output.json
<browser_name>://tracing
(例如chrome://tracing
),并加载output.json
文件以进行可视化。
如果代码使用了大量的模板,那么你可以尝试进行模板实例化分析。Steven Watanabe设计了分析工具,如果我没记错的话,它应该可以在VS上运行(不知道是哪个版本)。
源代码是否在网络上?这有时会大大减慢编译速度。
我猜测从性能剖析中获取有用的结果可能会很困难。您可以查看每个.obj文件的创建时间,看是否有任何特别缓慢的文件,但我怀疑这种情况会发生。
您是否尝试过编译器选项,例如预编译头文件,以查看它们提供了什么改进?同样,在不需要优化程序的地方关闭优化器可以显著加快构建速度。我的建议是花些时间尝试一些“假设”场景。