有没有办法在MS Visual Studio C ++(2005)中优化链接时间?我们正在使用Xoreax Incredibuild进行编译加速,但没有链接。
目前每个链接大约需要30秒。当我打开增量链接时,需要35-40秒。 (无论我是否使用incredibuild编译项目)
有什么办法,如何配置链接器并观察需要多长时间?或者任何用于paralel链接的工具?或者任何关于加速链接器的代码优化的技巧?
感谢您的回复 Ludek Vodicka
编辑:
感谢您的第一次回复和其他信息:
答案 0 :(得分:8)
我不知道任何并行链接工具;我知道Incredibuild不允许这样做。
工具箱中用于避免链接时间的最大工具是适当的抽象级别。如果链接时间很长,可能是因为对象对其他对象了解太多。然后解耦它们是关键 - 通过抽象接口(可能使用PIMPL范例),或者通过其他方法,例如事件传递。
通过Project Dependencies链接项目的开销也很高。如果您的目标平台仅限Win32,或者主要是您,可以考虑使用标头通过#pragma comment(lib,“pathToLib”)链接您的依赖库。
答案 1 :(得分:7)
如果您可以在没有优化的情况下生活,请关闭链接时代码生成(删除/ GL开关或属性c / c ++ - >优化 - >整个程序优化。对于链接器删除/ ltcg或使用链接时间码生成设置)。这会使编译器变慢,因为代码生成现在在编译期间发生。
我见过使用/ GL + / LTCG构建需要数小时的项目,仅需几秒钟(例如:http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/750ed2b0-0d51-48a3-bd9a-e8f4b544ded8)
答案 2 :(得分:2)
您是否考虑过改进硬件? 您是否使用单独的物理硬盘驱动器进行构建?你使用什么样的驱动器?
作为一般建议:投入一些内存,获取Velociraptor,只放置源并在那里构建目录,再次测量。如果这有帮助,请考虑RAID 0.
我听说有报告说从XP核心升级到W2K3核心可以显着改善构建时间,可能是因为更好的内存管理和缓存。
作为更改代码的建议,您可以将一些功能移动到DLL,并且并行链接。但是我不会为了改善构建时间而做出这样的改变。
答案 3 :(得分:0)
Improving link time with IncrediBuild
上有一些常规设置建议您还可以跳过静态库的链接,不使用IncrediLink
分发静态库我们发现添加签名后建立步骤会阻止IncrediBuild处理以下项目,为帖子构建添加评论应该有帮助
rem IncrediBuild_AllowOverlap