0
私の心に来たある種の最適化が可能かどうかを確認したいと思います。インライン関数は外部条件を避けますか?
// test.h
class Test
{
public:
static void Main();
private:
__forceinline static bool func1()
{
return ((externalCond1 && externalCond2) ? true : false);
}
}
// test.cpp
#include "test.h"
void Test::Main()
{
if(func1() == true)
{
//Do something
}
}
はMain
の条件はインラインfunc1
のおかげで離れて最適化され、そして実際にテストされているから、それを防ぐことでしょうか? (func1
内の条件のみをテストすることになる)。
これは単なるコード例です。しかし、私の実際のインライン関数はそれほど短期間であるため、func1
内の条件を、この最適化が不可能であると判明した場合、この関数を呼び出したいすべての場所にコピーします。
最後に、「最適化が可能であれば、私は、単に「戻り値の最適化」パラダイムのケースかどうかを知りたいと思います。 __forceinline
属性が表彰され
C++コンパイラは、観察可能な効果を持たない最適化を使用することはできますが、必須ではありません。あなたの望む最適化には、観察可能な効果はありません。あなたのC++コンパイラは、この裁量でこの最適化を実装するかもしれません。それは許可されていますが、そうする必要はありません。通常、この最適化が行われるかどうかは、コードをコンパイルするときに選択する特定のコンパイルオプションによって決まります。 –