c++ - 视觉 C++ 2008 : Finding the cause of slow link times

标签 c++ visual-c++ linker

我有一个遗留的 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/

相关文章:

c# - C# 中的 "var"是否类似于 C 中的 "size_t"?

c++ - 使用 AVX 异或两个 zmm(512 位)寄存器

c++ - 打印和调试时 Visual C++ 值不同?

c++ - 在派生类中强制执行正确的虚函数定义

c - 如何在头文件中定义变量,C

c++ - OpenCV cvSmooth 链接器错误

c++ - Visual Studio 2013 Professional 链接器错误

c++ - 在 C++ 的析构函数中允许做什么?

c++ - SHA-2 算法的字节顺序乐趣

c++ - 为什么尽管有 SW_HIDE 和 CREATE_NO_WINDOW,通过 CreateProcess 调用的程序的窗口仍会显示?