我有一个包含Fortran和C ++代码的exe,它最近被修改为链接到一些自定义静态库。 exe现在在每个函数中运行速度明显慢于(因子为2),即使它在测试运行中没有调用任何新代码。已经在分析器中检查了调用图和函数命中计数,并验证了未调用新代码的断言。
在链接时,现在有许多由新代码引起的“多重定义”警告。但是,仍然启用了优化,并且未修改其他编译器或环境设置。 exe并没有比以前大得多,两次运行的内存占用量相同。
任何可能导致这种情况的想法?
答案 0 :(得分:0)
这个问题是由一系列螺旋式连接导致的,并且在调用链的某些模块中无意中关闭了优化。在标题被链接之前,在这些模块中没有优化是没有意义的,这是代码的性能关键部分。由于构建顺序的变化,过去包含这些标头的优化模块不再起作用。