栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java Math.min / max性能

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Math.min / max性能

很难说出为什么

Math.max
比a慢
Ops.max
,但是很容易说出为什么该基准测试强烈支持分支到条件移动:在
n
-th迭代中,

Math.max( array[i], max );

不等于是大于所有先前元素

max
的概率
array[n-1]
。显然,这种可能性变得更低,并降低增长
n
并给予

final int[] array = new int[(8*1024*1024)/4];

在大多数情况下,它几乎可以忽略不计。条件移动指令对分支概率不​​敏感,它总是花费相同的时间来执行。 如果 分支很难预测,
条件移动指令比分支预测快。另一方面,如果可以高概率很好地预测分支,则分支预测会更快。目前,我不确定条件转移的速度与分支的最佳和最差情况相比。1个

在您的情况下,除了前几个分支外,所有分支都是可以预测的。从大约

n ==10
开始,使用条件移动是没有意义的,因为可以肯定地保证了分支的正确预测,并且可以与其他指令并行执行(我猜您每次迭代只需要一个周期)。

这似乎发生在算法计算最小值/最大值或进行一些低效率的排序时(好的分支可预测性意味着每步熵低)。


1条件移动和预测分支都需要一个周期。前者的问题在于它需要两个操作数,这需要额外的指令。最后,当分支单元空闲时,关键路径可能会变长和/或ALU饱和。通常,但并非总是如此,在实际应用中可以很好地预测分支。这就是为什么首先创建分支预测的原因。

至于定时条件移动与分支预测最佳和最差情况的详细信息,请参见下面的评论讨论。我的我自己的基准表明,有条件的举动是显著比分支预测时更快分支预测遇到的最糟糕的情况,但我不能忽视矛盾的结果。我们需要一些解释到底是什么与众不同。一些其他基准和/或分析可能会有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570376.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号