我有一个遗留的 C++ 项目,它需要很长的时间来构建(几分钟,即使是小的增量更改),我发现大部分时间都花在了链接上。
该项目已经在使用预编译头和增量编译。 我启用了“/time”命令行参数,希望我能获得有关链接器减慢原因的更多详细信息,并获得以下输出:
1>Linking...
1> MD Merge: Total time = 59.938s
1> Generate Transitions: Total time = 0.500s
1> MD Finalize: Total time = 7.328s
1>Pass 1: Interval #1, time = 71.718s
1>Pass 2: Interval #2, time = 8.969s
1>Final: Total time = 80.687s
1>Final: Total time = 80.953s
有没有办法获得有关每个步骤的更多详细信息? 例如,我想知道他们是否花最多时间链接到特定的 .lib 或 .obj 文件。
此外,是否有任何文档解释这些步骤的作用?
最佳答案
“MD 合并”步骤正在寻找并合并重复的字符串文字和其他重复数据。请注意,执行此操作所需的时间是你拥有的字符串文字数量的 O(n^2),所以我曾经遇到过类似的问题,其中包含 ~10K 字符串文字的头文件需要 5 分钟才能链接。
添加链接器标志 /OPT:NOICF
可能会有所帮助。或者,检查为什么要折叠这么多文字。
关于c++ - 视觉 C++ 2008 : Finding the cause of slow link times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2767162/