我有一些非常复杂的 C++ 代码,用于实时系统,因此对速度绝对敏感。它是在 Linux 上开发的,为了加快速度,许多函数都标有“inline”关键字,并移到头文件中以允许内联。
现在我将此代码移植到 Windows(msvc 10.0、Windows 7),它的运行速度慢了大约 30%。在做了一些分析之后,我发现问题基本上是很多函数没有内联。当我改用“__forceinline”时,我很容易看到大约 10-20% 的加速。
有人对此有解释吗?仅仅是msvc中的算法更保守吗?还是我做错了什么,比如缺少配置选项?