闲着没事测试下if-else的执行效率
测试环境:Mac pro i7 2.3Ghz 。。。编译器gcc 4.9,代码没有进行优化-O0;
测试代码:c代码1:
int main(){
int n=100000000;
int b=-1;
int a=0;
while(n-->0){
if(b<0) b--;else b--;
}
return 0;
汇编代码1&#xff1a;
_main:
LFB0:
pushl%ebp
LCFI0:
movl%esp, %ebp
LCFI1:
subl$16, %esp
movl$100000000, -4(%ebp)
movl$-1, -8(%ebp)
movl$0, -12(%ebp)
jmpL2
L22:
cmpl$0, -8(%ebp)
jnsL3
subl$1, -8(%ebp)
jmpL4
L3:
L4:
jnsL5
jmpL6
L5:
L6:
jnsL7
jmpL8
L7:
L8:
jnsL9
jmpL10
L9:
L10:
jnsL11
jmpL12
L11:
L12:
jnsL13
jmpL14
L13:
L14:
jnsL15
jmpL16
L15:
L16:
jnsL17
jmpL18
L17:
L18:
jnsL19
jmpL20
L19:
L20:
jnsL21
L21:
L2:
movl-4(%ebp), %eax
leal-1(%eax), %edx
movl%edx, -4(%ebp)
testl%eax, %eax
jgL22
movl$0, %eax
leave
c代码2&#xff1a;
if(b>0) b--;else b--;
汇编代码2&#xff1a;
jleL3
jleL5
jleL7
jleL9
jleL11
jleL13
jleL15
jleL17
jleL19
jleL21
leave执行结果&#xff1a;
看来else执行的效率高一些。。。。