将内联函数避免外部条件
Will inline function avoid external condition?
我想确认我想到的某种优化是可能的。
// 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
中的条件复制到所有想调用此功能的地方,如果事实证明这是不可能的。
最后,我想知道(仅在可能的优化时)是否仅仅是"返回值优化"范式的情况。
如果__forceinline
属性受到尊重,则您的代码等效于
void Test::Main()
{
if (((externalCond1 && externalCond2) ? true : false) == true)
{
//Do something
}
}
如果您的条件在此编译单元外部的变量方面是外部的,则不能对其进行优化,因为它们的值在编译时未知。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 在没有太多条件句的情况下,我如何避免被零除
- 基于多个条件处理地图中的所有元素
- 条件constexpr函数
- 无论条件是否为true,if总是在c++中执行
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 基于模板值的条件变量
- 在函数内部的声明中初始化数组,并在外部使用它
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 使外部项目可用于find_package CMake
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- C++:来自外部文件的Trivia
- 从函数角度看ID到文件路径的内部与外部映射
- C++:将外部库链接到dll库
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 将内联函数避免外部条件
- 针对外部标志(cpp)的循环条件的更改
- 使用外部条件修改序列操作
- 在条件与外部获取数组元素的结果不同