aka*_*vel 2 c++ performance if-statement
有没有(用C++)两种风格之间的if-else写的任何性能差别,如下(逻辑上等同代码)所示的likely1 == likely2 == true路径(likely1和likely2在这里是指作为占位符的一些更详细的情况)?
// Case (1):
if (likely1) {
Foo();
if (likely2) {
Bar();
} else {
Alarm(2);
}
} else {
Alarm(1);
}
Run Code Online (Sandbox Code Playgroud)
与
// Case (2):
if (!likely1) {
Alarm(1);
return;
}
Foo();
if (!likely2) {
Alarm(2);
return;
}
Bar();
Run Code Online (Sandbox Code Playgroud)
我非常感谢有关尽可能多的编译器和平台的信息(但突出显示了gcc/x86).
请注意我对这两种风格的可读性意见不感兴趣,也没有任何"过早优化"声明.
编辑:换句话说,我想询问这两种样式是否在某些时候被编译器认为是完全100%等效/透明的(例如,在特定编译器中的某些点上逐位等效的AST) ,如果没有,那么有什么区别?对于任何(对"现代"和gcc)编译器的偏好,你知道.
而且,为了更清楚,我也真的不觉得它会给予我很大的性能提升,而且它通常会过早的优化,但我很感兴趣,是否和多少它可以提高/降低任何东西?
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |