如何减少用本机 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++ 编写的大型项目的链接时间?的主要内容,如果未能解决你的问题,请参考以下文章