在没有分支miss条件下,实现取最小值
文章目录
在实际性能优化过程,加了一个if判断整个系统转发性能就有大约5%的下降,下面简单分享一种在没有分支miss条件下,实现取最小值的方法。
一般实现
取两个数最小值,一般代码常见两种写法如下:
- 写法一:
|
|
- 写法二:
|
|
这两种写法只是代码写法不一致,实际都是通过一个if的语句的比较,存在if语句就代码运行过程就存在分支miss,而一个分支的miss的开销范围40到60 cycles;在追求高性能代码,且没有太多的优化点的过程中这是极其宝贵,且这两个分支出现概率都相当,也就不能简单通过likely与unlikely来实现分支预测
无分支miss实现
无分支实现代码如下:
|
|
分两种情况分析如下:
当a<b时,-(a<b)为True,表达式等价于min= b ^(a ^ b) = a;
当a>=b时,-(a < b)为False,表达式等价于min= b ^ 0 = b
故可以宏定义如下:
|
|
文章作者 沉风网事
上次更新 2015-05-24