如何减少用本机 Visual C++ 编写的大型项目的链接时间?

Posted

技术标签:

【中文标题】如何减少用本机 Visual C++ 编写的大型项目的链接时间?【英文标题】:How to reduce linkage time for large project written in native Visual C++? 【发布时间】:2008-11-30 16:12:25 【问题描述】:

我正在处理大量用 Visual C++ 编写的源代码。目标是dll库。联动时间消耗几分钟。如何减少这个时间?

库依赖于相同解决方案中的其他 dll 和库。

可以做的第一件事是将源代码拆分为几个项目,但这是一种耗时且非常昂贵的方法。

可能还有一些其他方法可以在我的情况下使用。

编辑:我使用增量链接,虽然这大大减少了时间,但这对我来说还不够。 目标文件的大小没有问题,因为最烦人的是开发这样的代码库。每一个小修改都需要等我链接。

【问题讨论】:

【参考方案1】:

重构!!!将大 DLL 拆分为较小的模块,使用接口层执行此操作,当您将“巨大”DLL 拆分为较小的模块时创建架构,而不是获取前 5 个文件等。仔细映射 DLL 层次结构 0 级 DLL 是独立的,级别1 个 DLL 可能依赖于 1 个或多个级别 0,等等。

这样做的努力会得到回报,假设只有 10 个开发人员每天只等待 6 分钟链接,10*6 == 1 小时 * 每周 5 天,这意味着您每周损失超过半天的开发时间,这应该足以证明中断功能开发以使您的鸭子井井有条。

您还提到了库,如果您也有制作这些 DLL 的源代码,那么当您启用编辑并继续时,这将很快得到回报。

【讨论】:

【参考方案2】:

如果您不使用增量链接,您应该研究一下。它基本上是在最终对象大小与链接性能之间进行交易。

全局优化选项还将编译时间(即代码生成)从编译阶段转移到链接阶段 - 您可能会发现最好放弃它们,这样单个文件的编译速度会变慢,但链接会更快。

【讨论】:

谢谢,我用过这样的方法,我正在寻找其他方法,也可以使用。【参考方案3】:

您可以尝试减少包含依赖项。 一些标头会触发大量代码添加到 .obj 文件中,即使其中没​​有真正使用。 此类标头的一些示例是和

【讨论】:

以上是关于如何减少用本机 Visual C++ 编写的大型项目的链接时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何在visual studio2015 中配置编写C,C++程序

Visual Studio 混合项目调试

是否在CLR上运行非托管Visual C ++?

怎么用Visual Studio 2008编写C++程序?

如何用visual studio 2010 写c++程序

如何使用Visual Studio 2012的C++编写DLL