比较运算符的性能(>、>=、<、<=)

Posted

技术标签:

【中文标题】比较运算符的性能(>、>=、<、<=)【英文标题】:Comparison operator performance (>, >=, <, <=) 【发布时间】:2011-08-17 04:50:40 【问题描述】:

如果要比较两个整数,运算符是否会影响执行比较所需的时间?例如,给定:

if (x < 60)

if (x <= 59)

哪个会提供最佳性能,或者性能差异可以忽略不计?性能结果是否取决于语言?

我经常发现自己在我的代码中混合使用这些运算符。任何想法将不胜感激。

【问题讨论】:

是的,确实存在性能差异(至少在 javascript 中):在我的机器上 x &lt; 60 需要 1103,1 皮秒来执行,x &lt;= 59 需要 1103,2 皮秒来执行,使得它慢了十分之一皮秒。震惊:)See for yourself @Šime Vidas:这很酷。这些结果肯定取决于浏览器。 是的,在 IE9 中 &lt;= 实际上慢了 32% (!!)(在我的机器上是 2.7 纳秒)。 【参考方案1】:

即使有明显的差异,我认为编译器足够聪明,可以处理这些事情。所以我的建议是使用使代码更容易理解的东西,并将微优化留给编译器。

【讨论】:

【参考方案2】:

在您给出的特定示例中,一侧是恒定的,如果优化器明显更快,我希望优化器将其转换为另一侧。

【讨论】:

【参考方案3】:

差异可以忽略不计。从理论上讲,它们可能与语言有关。

正如另一个答案所提到的,它们在理论上也依赖于平台。

见:Is the inequality operator faster than the equality operator?

【讨论】:

【参考方案4】:

几乎可以肯定性能没有差异。对于 CISC 处理器,您通常会有各种分支指令来处理所有差异 >= 等。在 RISC 上可能会有非常小的性能差异,尽管我对此表示严重怀疑!

【讨论】:

以上是关于比较运算符的性能(>、>=、<、<=)的主要内容,如果未能解决你的问题,请参考以下文章

三目运算符及自动拆箱问题及性能比较

日期比较 BETWEEN vs < >

用于比较值类型的短路运算符的.Net性能?

HashMap位运算你可知一二

BETWEEN 运算符与 >= AND <=:有性能差异吗?

Javascript中的组合比较/“宇宙飞船”运算符(<=>)?