C++中judge_function_1与judge_function_2是否存在速度差异?后者是否更快?
两个C++函数的运行速度对比分析
这两个函数完全没有运行速度差异,judge_function_2并不会比judge_function_1更快,原因如下:
- C++中的逻辑或运算符
||是短路求值的:当第一个条件100 == 100判断为真时,会直接跳过第二个条件的计算,和judge_function_2里第一个if判断为真就直接return的逻辑完全一致,不存在“逻辑或要判断两个条件”的情况。 - 更进一步,现代编译器(比如GCC、Clang、MSVC)哪怕在普通优化级别下,都会把这两个函数直接优化成返回true的常量结果——因为所有判断条件都是编译期就能确定的常量表达式,运行时根本不会有任何分支判断操作。
原代码如下:
#include <iostream> using namespace std; bool judge_function_1() { if(100 == 100 || 100 == 200) { return true; } return false; } bool judge_function_2() { if(100 == 100) { return true; } if(100 == 200) { return true; } return false; } int main() { cout << judge_function_1() << endl; cout << judge_function_2() << endl; return 0; }
内容的提问来源于stack exchange,提问作者Karmylr
相关产品推荐
相关产品推荐

