我有一些非常复杂的c++代码,这些代码在实时系统中使用,因此绝对对速度敏感。它是在Linux上开发的,为了加快速度,许多功能都标有“inline”关键字,然后移入头文件以进行内联。

现在,我将此代码移植到Windows(msvc 10.0,Windows 7),运行速度降低了约30%。经过一些分析后,我发现问题基本上是很多函数没有被内联。当我改用“__forceinline”时,我很容易看到速度提高了10-20%。

有人对此有解释吗?仅仅是msvc中的算法工作更为保守吗?还是我做错了什么,例如缺少配置选项?

最佳答案

您需要检查MSVC优化设置:

Project Properties -> C/C++ -> Optimization

有一个称为"Favor size or speed"的设置,该设置会实质上改变编译器准备执行的内联量。

08-26 15:03