首页 > 解决方案 > Visual C++ 项目中的特征。与内联函数扩展的链接非常慢

问题描述

我正在研究一个重矩阵和向量代数的模拟程序,为此我在 i7-3770k 和 16Gb 上使用 Eigen 和 Visual Studio(2017 和 2019,没有区别)。我绝不是 C++ 或 Visual Studio 方面的专家。

在调试模式下构建,所有优化和内联函数扩展关闭非常快,但执行时间比发布模式下要慢得多,以至于测试和进一步的代码工作变得难以管理。问题是,具有某些优化的发布模式下的编译时间非常慢。我的程序非常小(大约 23 个源文件,每个代码在 50 到 1500 行之间)。

我追溯了关键因素是内联函数扩展选项。根据其设置,某个模拟运行的构建和执行时间如下所示:

/Ob0:          Build: 18s     Exec 42s  (disabled)
/Ob1 or /Ob2:  Build: 10m30s  Exec 0.9s   (only __inline, any suitable)

也就是说,内联扩展的激活使代码 x45 更快,但构建时间变得 x35 更长。

在激活任何内联函数扩展选项时,为什么链接变得如此缓慢,是否有任何明确的解释?我猜 Eigen 充满了内联函数,这使得 obj 文件更大且链接速度更慢,但在我看来差异很大。

最重要的是:有什么方法可以减少激活此选项的链接时间?

提前致谢。

标签: visual-c++linkereigen

解决方案


推荐阅读