0

我有一个包含 Fortran 和 C++ 代码的 exe,该代码最近被修改为链接到一些自定义静态库。exe 现在在每个函数中的运行速度都比以前慢得多(~ 2 倍),即使它在测试运行中没有调用任何新代码。调用图和函数命中计数已在分析器中检查,并验证新代码未被调用的断言。

在链接时,现在有许多由新代码引起的“多重定义”警告。但是,优化仍然启用,并且没有修改其他编译器或环境设置。exe 没有比以前大很多,并且两次运行的内存占用量相同。

有什么想法可能导致这种情况吗?

4

1 回答 1

0

该问题是由螺旋状的包含链引起的,其中优化在调用链下游的某些模块中无意中关闭。在链接标头之前,在这些模块中没有优化是没有意义的,这是代码的性能关键部分。由于构建顺序的更改,用于包含这些标头的优化模块不再起作用。

于 2012-10-20T11:26:31.450 回答