Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何减少MSVC中的链接时间?_C++_Visual C++ - Fatal编程技术网

C++ 如何减少MSVC中的链接时间?

C++ 如何减少MSVC中的链接时间?,c++,visual-c++,C++,Visual C++,在MSVC中使用LTO大大增加了构建时间 之前: 构建时间(发布时间):00:02:48.2022884 之后: 构建时间(发布):00:04:50.1647716 有没有办法减少MSVC(或一般情况下)所需的总链接时间?在过去的几个版本中,在提高链接器的整体性能方面做了大量工作,因此VS2019是一个很好的升级版本 对于“本地”开发版本,/DEBUG:FASTLINK可以帮助您避免将所有PDB合并为一个。这对您的夜间构建没有帮助,但是它在您的迭代时间上有很大的不同 通常,执行“整个程序优化”/

在MSVC中使用LTO大大增加了构建时间

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

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


有没有办法减少MSVC(或一般情况下)所需的总链接时间?

在过去的几个版本中,在提高链接器的整体性能方面做了大量工作,因此VS2019是一个很好的升级版本

对于“本地”开发版本,
/DEBUG:FASTLINK
可以帮助您避免将所有PDB合并为一个。这对您的夜间构建没有帮助,但是它在您的迭代时间上有很大的不同

通常,执行“整个程序优化”/“链接时间代码生成”的总时间将根据最终EXE的大小进行缩放。如果你有一个“大型单片”EXE——我见过一些PC游戏达到100MB+的范围——它将比一个带有几个DLL的小型EXE需要更长的时间

见:


我对此表示怀疑。你要求链接器做很多额外的工作,根据我的经验,MSVC链接器的速度相对较快。但是你真的做了很多版本构建吗?我个人只倾向于在开发过程的后期进行这些操作。链接器基本上生成两件事:最终的EXE或DLL,以及合并所有符号的PDB。创建PDB可能需要相当长的时间,因此
/DEBUG:FASTLINK
要做的是创建一个PDB,它只指向构建中已经创建的所有单个PDB。这使您可以在PDB全部就位的情况下进行本地调试,并节省时间。如果要发布EXE/DLL供其他人使用,则必须完全完成PDB,您可以使用完全重建或专用工具来完成。