c语言if-else的效率比较
闲着没事测试下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--; if(b<0) b--;else b--; if(b<0) b--;else b--; if(b<0) b--;else b--; if(b<0) b--;else b--; if(b<0) b--;else b--; if(b<0) b--;else b--; if(b<0) b--;else b--; if(b<0) b--;else b--; if(b<0) b--;else b--; } return 0;}
汇编代码1:
_main:LFB0: pushl %ebpLCFI0: movl %esp, %ebpLCFI1: subl $16, %esp movl $100000000, -4(%ebp) movl $-1, -8(%ebp) movl $0, -12(%ebp) jmp L2L22: cmpl $0, -8(%ebp) jns L3 subl $1, -8(%ebp) jmp L4L3: subl $1, -8(%ebp)L4: cmpl $0, -8(%ebp) jns L5 subl $1, -8(%ebp) jmp L6L5: subl $1, -8(%ebp)L6: cmpl $0, -8(%ebp) jns L7 subl $1, -8(%ebp) jmp L8L7: subl $1, -8(%ebp)L8: cmpl $0, -8(%ebp) jns L9 subl $1, -8(%ebp) jmp L10L9: subl $1, -8(%ebp)L10: cmpl $0, -8(%ebp) jns L11 subl $1, -8(%ebp) jmp L12L11: subl $1, -8(%ebp)L12: cmpl $0, -8(%ebp) jns L13 subl $1, -8(%ebp) jmp L14L13: subl $1, -8(%ebp)L14: cmpl $0, -8(%ebp) jns L15 subl $1, -8(%ebp) jmp L16L15: subl $1, -8(%ebp)L16: cmpl $0, -8(%ebp) jns L17 subl $1, -8(%ebp) jmp L18L17: subl $1, -8(%ebp)L18: cmpl $0, -8(%ebp) jns L19 subl $1, -8(%ebp) jmp L20L19: subl $1, -8(%ebp)L20: cmpl $0, -8(%ebp) jns L21 subl $1, -8(%ebp) jmp L2L21: subl $1, -8(%ebp)L2: movl -4(%ebp), %eax leal -1(%eax), %edx movl %edx, -4(%ebp) testl %eax, %eax jg L22 movl $0, %eax leave
c代码2:
int main(){ int n=100000000; int b=-1; int a=0; while(n-->0){ if(b>0) b--;else b--; if(b>0) b--;else b--; if(b>0) b--;else b--; if(b>0) b--;else b--; if(b>0) b--;else b--; if(b>0) b--;else b--; if(b>0) b--;else b--; if(b>0) b--;else b--; if(b>0) b--;else b--; if(b>0) b--;else b--; } return 0;}
汇编代码2:
_main:LFB0: pushl %ebpLCFI0: movl %esp, %ebpLCFI1: subl $16, %esp movl $100000000, -4(%ebp) movl $-1, -8(%ebp) movl $0, -12(%ebp) jmp L2L22: cmpl $0, -8(%ebp) jle L3 subl $1, -8(%ebp) jmp L4L3: subl $1, -8(%ebp)L4: cmpl $0, -8(%ebp) jle L5 subl $1, -8(%ebp) jmp L6L5: subl $1, -8(%ebp)L6: cmpl $0, -8(%ebp) jle L7 subl $1, -8(%ebp) jmp L8L7: subl $1, -8(%ebp)L8: cmpl $0, -8(%ebp) jle L9 subl $1, -8(%ebp) jmp L10L9: subl $1, -8(%ebp)L10: cmpl $0, -8(%ebp) jle L11 subl $1, -8(%ebp) jmp L12L11: subl $1, -8(%ebp)L12: cmpl $0, -8(%ebp) jle L13 subl $1, -8(%ebp) jmp L14L13: subl $1, -8(%ebp)L14: cmpl $0, -8(%ebp) jle L15 subl $1, -8(%ebp) jmp L16L15: subl $1, -8(%ebp)L16: cmpl $0, -8(%ebp) jle L17 subl $1, -8(%ebp) jmp L18L17: subl $1, -8(%ebp)L18: cmpl $0, -8(%ebp) jle L19 subl $1, -8(%ebp) jmp L20L19: subl $1, -8(%ebp)L20: cmpl $0, -8(%ebp) jle L21 subl $1, -8(%ebp) jmp L2L21: subl $1, -8(%ebp)L2: movl -4(%ebp), %eax leal -1(%eax), %edx movl %edx, -4(%ebp) testl %eax, %eax jg L22 movl $0, %eax leave执行结果:
看来else执行的效率高一些。。。。
>更多相关文章
- 09-29如何通过wrap malloc定位C/C++程序的内存泄漏
- 02-25打车软件大战升级,补贴还能维持多久?
- 12-23BMP文件右旋90度[c语言]
- 12-23寻找直方图中面积最大的矩形(C语言版)
- 12-23[ndk,2]ndk开发案例和错误处理
- 12-23[ndk,1]ndk开发,C语言入门讲解
- 12-23C语言连续存储实现队列机制
- 12-23Objective-c 数据类型
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 11-18LG新能源宣布与Bear Robotics达成合作,成为
- 11-18机构:三季度全球个人智能音频设备市场强势
- 11-18闲鱼:注册用户过6亿 AI技术已应用于闲置交
- 11-18美柚、宝宝树回应“涉黄短信骚扰”:未发现
- 11-01京东七鲜与前置仓完成融合
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御