为什么MSVC 10.0编译器经常忽略内联关键字?

4 c++ inlining visual-c++

我有一些非常复杂的c ++代码,它在实时系统中使用,因此对速度非常敏感.它是在Linux上开发的,为了加快它的速度,许多函数都标有"inline"关键字并移入头文件以允许内联.

现在我将此代码移植到Windows(msvc 10.0,Windows 7),它运行速度慢了约30%.在做了一些分析后,我发现问题基本上是很多函数没有内联.当我使用"__forceinline"时,我很容易看到加速大约10-20%.

有人对此有解释吗?仅仅是msvc中的算法更加保守吗?或者我做错了什么,比如错过配置选项?

Ben*_*enj 5

您需要检查MSVC优化设置:

Project Properties -> C/C++ -> Optimization
Run Code Online (Sandbox Code Playgroud)

有一个调用的设置"Favor size or speed"实质上改变了编译器准备做多少内联.