高效执行代码

时间:2014-12-19 04:40:19

标签: performance

       if (x > 5)
        {
            return true;
        }
        else
        {
            return false;
        }

,我有一个代码表达式:

  return (x > 5);

哪个代码块会更有效地执行? - if-else块或单个Return Statement

1 个答案:

答案 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