我想减少我的项目的链接时间,为了做到这一点,我想确切地理解,为什么要花这么长时间--这是一个特定的库吗?是别的什么事吗?我怎么知道改变什么以改善链接时间?
更新
有许多“通用”建议,如“减少库依赖”,但在我们的情况下,它们似乎不切实际。我们的代码库很大,有许多库依赖项,通过实验发现哪种依赖关系对链接时间的影响最大将花费大量的时间。代码库的很大一部分是几年前开发的,没有过多考虑依赖关系。我们正在寻找一种找到具体方向的方法,例如“X对Y的依赖将有利于链接时间”,不需要尽力而为地尝试所有可能的方向。
请注意,我们根本没有使用LTCG。
发布于 2014-05-26 11:20:22
首先,我修改了可执行文件的项目属性,这需要很长时间才能链接,并将/VERBOSE添加到链接器命令行。这样,链接器就会生成一个详细的日志。
然后,我编写了一个小的powershell脚本来对我的构建生成的每一行进行时间戳。这样,我就可以看到链接器打印的线条之间经过了多少时间。假设链接器没有对它正在做的事情撒谎,这给了我一个相当好的提示,它花了多少时间来做哪个操作。
下面是powershell代码:
msbuild /p:Configuration=Debug /p:Platform=X64 /m MY_SOLUTION.sln *>&1 | & {
process {
$date = get-date -DisplayHint Time -Format hh:mm:ss.fff
Write-Host $date -NoNewLine
Write-Host $_
}
}发布于 2014-05-21 14:02:21
对于VisualC++,我认为链接时间优化的第一步是关闭“全程序优化(/GL)”选项。
我想推荐一本关于这个主题的书:大型C++软件设计。这本书给出了关于大规模C++开发的许多优点,但我认为主题是‘如何设计包关系,以减少链接时间’。
它是关于模块(lib,dll)依赖最小化技术。因为,链接一个由多个小模块组成的项目往往比一个大型(多个文件)项目运行得更快。
另外,查看这篇博文:“大规模C++软件设计”在实践中的应用
https://stackoverflow.com/questions/23784688
复制相似问题