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	%ebp
LCFI0:
	movl	%esp, %ebp
LCFI1:
	subl	$16, %esp
	movl	$100000000, -4(%ebp)
	movl	$-1, -8(%ebp)
	movl	$0, -12(%ebp)
	jmp	L2
L22:
	cmpl	$0, -8(%ebp)
	jns	L3
	subl	$1, -8(%ebp)
	jmp	L4
L3:
	subl	$1, -8(%ebp)
L4:
	cmpl	$0, -8(%ebp)
	jns	L5
	subl	$1, -8(%ebp)
	jmp	L6
L5:
	subl	$1, -8(%ebp)
L6:
	cmpl	$0, -8(%ebp)
	jns	L7
	subl	$1, -8(%ebp)
	jmp	L8
L7:
	subl	$1, -8(%ebp)
L8:
	cmpl	$0, -8(%ebp)
	jns	L9
	subl	$1, -8(%ebp)
	jmp	L10
L9:
	subl	$1, -8(%ebp)
L10:
	cmpl	$0, -8(%ebp)
	jns	L11
	subl	$1, -8(%ebp)
	jmp	L12
L11:
	subl	$1, -8(%ebp)
L12:
	cmpl	$0, -8(%ebp)
	jns	L13
	subl	$1, -8(%ebp)
	jmp	L14
L13:
	subl	$1, -8(%ebp)
L14:
	cmpl	$0, -8(%ebp)
	jns	L15
	subl	$1, -8(%ebp)
	jmp	L16
L15:
	subl	$1, -8(%ebp)
L16:
	cmpl	$0, -8(%ebp)
	jns	L17
	subl	$1, -8(%ebp)
	jmp	L18
L17:
	subl	$1, -8(%ebp)
L18:
	cmpl	$0, -8(%ebp)
	jns	L19
	subl	$1, -8(%ebp)
	jmp	L20
L19:
	subl	$1, -8(%ebp)
L20:
	cmpl	$0, -8(%ebp)
	jns	L21
	subl	$1, -8(%ebp)
	jmp	L2
L21:
	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
	leavec代码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	%ebp
LCFI0:
	movl	%esp, %ebp
LCFI1:
	subl	$16, %esp
	movl	$100000000, -4(%ebp)
	movl	$-1, -8(%ebp)
	movl	$0, -12(%ebp)
	jmp	L2
L22:
	cmpl	$0, -8(%ebp)
	jle	L3
	subl	$1, -8(%ebp)
	jmp	L4
L3:
	subl	$1, -8(%ebp)
L4:
	cmpl	$0, -8(%ebp)
	jle	L5
	subl	$1, -8(%ebp)
	jmp	L6
L5:
	subl	$1, -8(%ebp)
L6:
	cmpl	$0, -8(%ebp)
	jle	L7
	subl	$1, -8(%ebp)
	jmp	L8
L7:
	subl	$1, -8(%ebp)
L8:
	cmpl	$0, -8(%ebp)
	jle	L9
	subl	$1, -8(%ebp)
	jmp	L10
L9:
	subl	$1, -8(%ebp)
L10:
	cmpl	$0, -8(%ebp)
	jle	L11
	subl	$1, -8(%ebp)
	jmp	L12
L11:
	subl	$1, -8(%ebp)
L12:
	cmpl	$0, -8(%ebp)
	jle	L13
	subl	$1, -8(%ebp)
	jmp	L14
L13:
	subl	$1, -8(%ebp)
L14:
	cmpl	$0, -8(%ebp)
	jle	L15
	subl	$1, -8(%ebp)
	jmp	L16
L15:
	subl	$1, -8(%ebp)
L16:
	cmpl	$0, -8(%ebp)
	jle	L17
	subl	$1, -8(%ebp)
	jmp	L18
L17:
	subl	$1, -8(%ebp)
L18:
	cmpl	$0, -8(%ebp)
	jle	L19
	subl	$1, -8(%ebp)
	jmp	L20
L19:
	subl	$1, -8(%ebp)
L20:
	cmpl	$0, -8(%ebp)
	jle	L21
	subl	$1, -8(%ebp)
	jmp	L2
L21:
	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执行的效率高一些。。。。
c语言if-else的效率比较的更多相关文章
- Leaf - 一个由 Go 语言编写的开发效率和执行效率并重的开源游戏服务器框架
		转自:https://toutiao.io/posts/0l7l7n/preview Leaf 游戏服务器框架简介 Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏 ... 
- 基于R语言的RRT算法效率统计
- 关于提高python程序执行效率的思路和想法
		相比编译型语言(C系列)python胜在简介的语法和优雅的动态编程体验,但是在执行效率上,python有解释性语言先天的劣势——执行效率较低,为了让编写出的程序获得更快的执行效率,开启此文章. pyt ... 
- 我为什么选择使用Go语言?
		谢孟军:EGO会员.GopherChina组织者.<Go Web编程>一书的作者,专注Golang技术架构.本文来自EGO会员群分享,入群方式见文末 在这里我主要想和大家分享一些Go和我个 ... 
- atitit groovy 总结java 提升效率
		atitit groovy 总结java 提升效率 #---环境配置 1 #------安装麻烦的 2 三.创建groovy项目 2 3. 添加 Groovy 类 2 4. 编译运行groovy类 ... 
- Qt 框架的图形性能高(OpenGL上的系统效率高),网络性能低,开发效率高,Quick是可以走硬件加速——Qt中分为好几套图形系统,差不多代表了2D描画的发展史。最经典的软描画系统
		-----图形性能部分-----Qt的widgets部分,运行时的图像渲染性能是一般的,因为大部分的界面内容都是Qt自绘,没有走硬件加速,也就是说很多图形内容都是CPU算出来的.但是widgets底层 ... 
- c语言入门
		c 语言现在是一门很流行的语言,它介于汇编语言和高级语言之间,我认为 它属于中级语言,如c语言 的指针 ,位操作符,等,因为接近于汇编语言,c语言的执行代码效率很高 现在大多数的系统 如unix,和l ... 
- 三分钟了解Go语言的前世今生
		一. 为什么需要一个新的语言最近十年来,C/C++在计算领域没有很好得到发展,并没有新的系统编程语言出现.对开发程度和系统效率在很多情况下不能兼得.要么执行效率高,但低效的开发和编译,如C++:要么执 ... 
- day02编程语言,Python语言介绍,Python解释器安装,环境变量,Python代码执行,pip,应用程序使用文件的三步骤,变量,变量的三大组成,比较,pycharm
		复习 重点: 1.进制转换:二进制 与十六进制 2.内存分布:栈区 与堆区 # 二进制1111转换十六进制 => 8 4 2 1 => f 10101100111011 => 2a7 ... 
- 为什么一定要学Go语言
		Go语言是谷歌2009发布的第二款开源编程语言.Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. 为什么要选择学习Go ... 
随机推荐
- 1.CentOS 7 vs CentOS 6的不同
			CentOS 7 vs CentOS 6的不同(1)桌面系统[CentOS6] GNOME 2.x[CentOS7] GNOME 3.x(GNOME Shell) (2)文件系统[CentOS6] ... 
- 核发电站 (dp前缀优化)
			大意: $n$个城市, $m$种核电站, 第$i$种假设要建在第$x$个城市, 必须满足$[x-i,x+i]$范围内无其他核电站, 求建核电站的方案数. 简单$dp$题, 设$dp[i][j]$为位置 ... 
- 怎样查看 MySQL 版本号
			1. 在命令行中直接查看版本号 mysql -V 2. 在 mysql --help 中查找与版本相关的信息 mysql --help | grep Ver 3. 在mysql命令行里面查看版本信息 ... 
- CentOS7利用systemctl添加dotnet后台服务
			/usr/lib/systemd/system/zl.service systemctl enable zl.service systemctl start zl.service [Unit]Desc ... 
- SPOJ-MobileService--线性DP
			题目链接 https://www.luogu.org/problemnew/show/SP703 方法一 分析 很显然可以用一个四维的状态\(f[n][a][b][c]\)表示完成第i个任务时且三人 ... 
- 关于Mybatis的几件小事(二)
			一.MyBatis缓存机制 1.简介 Mybatis包含了一个非常强大的查询缓存的特性,它可以非常方便地配置和定制. 缓存key极大提高查询效率 MyBatis系统中默认定义了两次缓存 默认情况下,只 ... 
- Oracle学习笔记:ASCII码转换(chr和ascii函数)
			今天get到一个骚操作,通过ascii码转换之后来进行互换编码的. select chr(ascii('f') + ascii('m') - ascii('a')) from dual; 有必要对as ... 
- activity与service之间的通信方式
			Activity之间的通信 1.activity与activity的通信可以通过Intent来封装数据,startActivityForResult()来实现,当跳转的activity调用finish ... 
- K2 BPM_K2受邀出席SAP研讨会:共话“智能+”时代下的赋能与转型_全业务流程管理专家
			 3月5日,第十三届全国人大二次会议在北京召开.政府工作报告首次出现“智能+”,并明确指出2019年,要打造工业互联网平台,拓展“智能+”,为制造业转型升级赋能.从政府工作报告中不难看出,“智能+” ... 
- DX使用随记--TabControl
			1. 关闭TabControl选项卡: Private Sub TabControl_Main_CloseButtonClick(sender As Object, e As EventArgs) H ... 
