if (x > 5)
{
return true;
}
else
{
return false;
}
,我有一个代码表达式:
return (x > 5);
哪个代码块会更有效地执行? - if-else块或单个Return Statement
答案 0 :(得分:3)
一个不错的编译器会将第一个版本优化为第二个版本。
没有优化,第一个版本包含一个分支(x86汇编中的Jxx指令),这很慢:
cmp ecx, 5 ; assume ecx contains the value of x
jle 1f ; assume x is signed
mov eax, 1
ret
1:
xor eax, eax
ret
第二个版本转换为x86中的SETxx指令,该指令不涉及分支,并且会更快:
xor eax, eax
cmp ecx, 5
setg al
ret