c语言if-else的效率比较
来源:互联网 发布:match sql语句 编辑:程序博客网 时间:2024/04/30 01:31
闲着没事测试下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, %espmovl$100000000, -4(%ebp)movl$-1, -8(%ebp)movl$0, -12(%ebp)jmpL2L22:cmpl$0, -8(%ebp)jnsL3subl$1, -8(%ebp)jmpL4L3:subl$1, -8(%ebp)L4:cmpl$0, -8(%ebp)jnsL5subl$1, -8(%ebp)jmpL6L5:subl$1, -8(%ebp)L6:cmpl$0, -8(%ebp)jnsL7subl$1, -8(%ebp)jmpL8L7:subl$1, -8(%ebp)L8:cmpl$0, -8(%ebp)jnsL9subl$1, -8(%ebp)jmpL10L9:subl$1, -8(%ebp)L10:cmpl$0, -8(%ebp)jnsL11subl$1, -8(%ebp)jmpL12L11:subl$1, -8(%ebp)L12:cmpl$0, -8(%ebp)jnsL13subl$1, -8(%ebp)jmpL14L13:subl$1, -8(%ebp)L14:cmpl$0, -8(%ebp)jnsL15subl$1, -8(%ebp)jmpL16L15:subl$1, -8(%ebp)L16:cmpl$0, -8(%ebp)jnsL17subl$1, -8(%ebp)jmpL18L17:subl$1, -8(%ebp)L18:cmpl$0, -8(%ebp)jnsL19subl$1, -8(%ebp)jmpL20L19:subl$1, -8(%ebp)L20:cmpl$0, -8(%ebp)jnsL21subl$1, -8(%ebp)jmpL2L21:subl$1, -8(%ebp)L2:movl-4(%ebp), %eaxleal-1(%eax), %edxmovl%edx, -4(%ebp)testl%eax, %eaxjgL22movl$0, %eaxleave
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, %espmovl$100000000, -4(%ebp)movl$-1, -8(%ebp)movl$0, -12(%ebp)jmpL2L22:cmpl$0, -8(%ebp)jleL3subl$1, -8(%ebp)jmpL4L3:subl$1, -8(%ebp)L4:cmpl$0, -8(%ebp)jleL5subl$1, -8(%ebp)jmpL6L5:subl$1, -8(%ebp)L6:cmpl$0, -8(%ebp)jleL7subl$1, -8(%ebp)jmpL8L7:subl$1, -8(%ebp)L8:cmpl$0, -8(%ebp)jleL9subl$1, -8(%ebp)jmpL10L9:subl$1, -8(%ebp)L10:cmpl$0, -8(%ebp)jleL11subl$1, -8(%ebp)jmpL12L11:subl$1, -8(%ebp)L12:cmpl$0, -8(%ebp)jleL13subl$1, -8(%ebp)jmpL14L13:subl$1, -8(%ebp)L14:cmpl$0, -8(%ebp)jleL15subl$1, -8(%ebp)jmpL16L15:subl$1, -8(%ebp)L16:cmpl$0, -8(%ebp)jleL17subl$1, -8(%ebp)jmpL18L17:subl$1, -8(%ebp)L18:cmpl$0, -8(%ebp)jleL19subl$1, -8(%ebp)jmpL20L19:subl$1, -8(%ebp)L20:cmpl$0, -8(%ebp)jleL21subl$1, -8(%ebp)jmpL2L21:subl$1, -8(%ebp)L2:movl-4(%ebp), %eaxleal-1(%eax), %edxmovl%edx, -4(%ebp)testl%eax, %eaxjgL22movl$0, %eaxleave执行结果:
看来else执行的效率高一些。。。。
2 0
- c语言if-else的效率比较
- c语言中 switch case 和 if else执行效率的比较
- [C语言]if/else 与 ?:的时间比较
- C/OC 语言 if else 和switch 哪个更效率
- 【C语言】if else
- switch case 和 if else效率的比较
- PHP下switch-case 和 if-else效率的比较
- 三目运算 与 if(){}else{}的效率比较
- switch-case和if-else的效率比较
- C语言:IF-ELSE的配对问题
- switch...case和if...else效率比较
- switch...case和if...else效率比较
- switch...case和if...else效率比较
- C 语言大量重复使用 if else 时,大概率执行的执行体是放在 if 中还是 else 中对执行效率的影响
- C语言比较两个数的大小使用if-else语句和条件运算符
- if 和 else if 的效率问题
- C语言if else语句
- c语言if else语句
- Windows 绘图详解
- Oracle11g ORA-609 TNS 12537 TNS 12560
- vector 中删除指定元素(个数为1-n个)
- 集合框架__JDK1.5新特性__【增强for循环】【可变参数】【静态导入】
- 黑马程序员---java学习笔记之多线程2
- c语言if-else的效率比较
- plist
- 贝叶斯统计
- UITableView表视图控件
- linux MISC 驱动模型分析
- 4 各种文件
- 关于国债的一些计算: 转换因子的计算
- 图像处理---内存法
- 理工大学ACM平台题答案关于C语言 1014 A+B for Input-Output Practice (V)