【发布时间】:2017-12-09 18:57:25
【问题描述】:
我想确认我想到的某种优化是否可行。
// 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
}
}
由于内联的func1,Main 的条件是否会被优化掉,并阻止它被实际测试? (导致只测试func1内的条件)。
这只是一个示例代码。但是,由于我真正的内联函数反正就是这么短,我会简单地将func1 中的条件复制到所有想要调用这个函数的地方,如果事实证明这种优化是不可能的。
最后,我想知道(仅在可以优化的情况下)它是否只是“返回值优化”范式的一个案例。
【问题讨论】:
-
C++ 编译器允许但不是必需的,以采用任何没有明显效果的优化。您想要的优化没有可观察到的效果。您的 C++ 编译器可能会或可能不会实现此优化,由其自行决定。允许这样做,但不是必须这样做。通常,是否进行此优化取决于您在编译代码时选择的特定编译选项。
标签: c++ optimization inline