【问题标题】:How to reduce link time in MSVC?如何减少 MSVC 中的链接时间?
【发布时间】:2020-09-25 11:55:05
【问题描述】:

在 MSVC 中使用 LTO 大大增加了我们的构建时间。

之前: 构建时间(发布):00:02:48.2022884

之后: 构建时间(发布):00:04:50.1647716

有什么方法可以减少 MSVC(或一般情况下)所需的总链接时间?

【问题讨论】:

  • 我对此表示怀疑。您要求链接器做很多额外的工作,而 MSVC 链接器在我的经验中相对较快。但是你真的做了很多发布版本吗?我个人只倾向于在开发过程的后期进行。

标签: c++ visual-c++


【解决方案1】:

在过去的几个版本中,我们在提高整体链接器性能方面做了很多工作,因此 VS 2019 是一个很好的升级。

对于您的“本地”开发版本,/DEBUG:FASTLINK 可以帮助您避免将所有 pdb 合并为一个。这对你的通宵构建没有帮助,但它对你的迭代时间有很大的影响。

一般来说,执行“整个程序优化”/“链接时间代码生成”的总时间将随着最终 EXE 的大小而变化。如果你有一个“大型单体”EXE——我已经看到一些 PC 游戏达到 100MB+ 的范围——这将比带有几个 DLL 的小型 EXE 花费更长的时间。

见:

【讨论】:

  • 链接器基本上会生成两件事:最终的 EXE 或 DLL,以及所有符号合并的 PDB。创建 PDB 可能需要相当长的时间,所以/DEBUG:FASTLINK 正在做的是创建一个 PDB,它只指向已在构建中创建的所有单个 PDB。这使您可以在 PDB 全部就位的情况下进行本地调试并节省时间。如果您要发布 EXE/DLL 以供其他人使用,则必须完全完成 PDB,您可以使用完全重建或特殊工具来完成。
猜你喜欢
  • 1970-01-01
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 2010-09-26
  • 2019-09-24
  • 2010-10-23
相关资源
最近更新 更多