为什么要减少分支语句的使用

本文探讨了为什么在编程中应尽量减少分支语句的使用,这与处理器的流水线处理方式有关。处理器通过流水线技术提高性能,但分支语句可能导致错误预测,浪费时钟周期,降低性能。条件传送作为一种替代方案,可以在某些情况下减少分支带来的性能损失。在Java项目中,可以利用反射技术进一步减少条件分支,提升软件运行效率。
摘要由CSDN通过智能技术生成

为什么要减少分支语句(if else等)的使用

这和处理器的运行有很大的关系

  • 处理器通过使用流水线来获得高性能。这种方法是通过重叠连续指令。一个指令的处理要经过很多的阶段,每个阶段执行所需操作的一小部分(从内存读取指令、确定操作类型、从内存中读取数据、执行算术运算、写数据、更新程序计数器)。
  • 分支语句(if else等)的缺点
    • 当机器遇到分支时,只有当分支条件求值完成之后,才能决定分支往哪边走。错误的预测则会浪费大约15~30个时钟周期,导致性能严重下降。
  • 要解决上面的问题,可以使用条件传送。
  • 下面是简单的示例:
//条件分支的方式
long absdiff(long x,long y){
	long result;
	if(x<y)
		result = y - x;
	else
		result = x - y;
	return result; 
}

//条件传送的方式
long cmovdiff(long x,long y){
	long rval = y - x;
	long eval = x - y;
	long ntest = x >= y;
	if(ntest) rval = eval;
	return rval;
}
  • 在java中,实际项目,可以通过反射的方式减少条件分支语句的使用以提高软件运行的效率。

更多信息:《深入理解计算机操作系统》

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值