c语言if-else的效率比较

浏览:
字体:
发布时间:2013-12-23 12:22:25
来源:东方联盟

闲着没事测试下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执行的效率高一些。。。。

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 下载 | 关于东盟 | 安全雇佣 | 搞笑视频大全 | 微信学院 |
关于我们 | 联系我们 | 广告服务 | 人才招聘 | 服务条款 | 免责申明 | 帮助中心 | 作品发布 | 网站地图 | 技术培训
Copyright © 2007 - 2018 Vm888.Com. All Rights Reserved
东方联盟 版权所有