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
- 09-19国家邮政局:中秋假期全国共揽投快递包裹超
- 09-19报告:2023年中国数字音乐市场总规模约为19
- 09-19近30亿人次出行,全国铁路客运量创新高
- 09-19阿里CEO吴泳铭:AI计算正在加速演进,成为计
- 08-29市场持续扩大,7月网约车订单信息破10亿单
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御