比较运算符的性能(>、>=、<、<=)
Posted
技术标签:
【中文标题】比较运算符的性能(>、>=、<、<=)【英文标题】:Comparison operator performance (>, >=, <, <=) 【发布时间】:2011-08-17 04:50:40 【问题描述】:如果要比较两个整数,运算符是否会影响执行比较所需的时间?例如,给定:
if (x < 60)
和
if (x <= 59)
哪个会提供最佳性能,或者性能差异可以忽略不计?性能结果是否取决于语言?
我经常发现自己在我的代码中混合使用这些运算符。任何想法将不胜感激。
【问题讨论】:
是的,确实存在性能差异(至少在 javascript 中):在我的机器上x < 60
需要 1103,1 皮秒来执行,x <= 59
需要 1103,2 皮秒来执行,使得它慢了十分之一皮秒。震惊:)
See for yourself
@Šime Vidas:这很酷。这些结果肯定取决于浏览器。
是的,在 IE9 中 <=
实际上慢了 32% (!!)(在我的机器上是 2.7 纳秒)。
【参考方案1】:
即使有明显的差异,我认为编译器足够聪明,可以处理这些事情。所以我的建议是使用使代码更容易理解的东西,并将微优化留给编译器。
【讨论】:
【参考方案2】:在您给出的特定示例中,一侧是恒定的,如果优化器明显更快,我希望优化器将其转换为另一侧。
【讨论】:
【参考方案3】:差异可以忽略不计。从理论上讲,它们可能与语言有关。
正如另一个答案所提到的,它们在理论上也依赖于平台。
见:Is the inequality operator faster than the equality operator?
【讨论】:
【参考方案4】:几乎可以肯定性能没有差异。对于 CISC 处理器,您通常会有各种分支指令来处理所有差异 >= 等。在 RISC 上可能会有非常小的性能差异,尽管我对此表示严重怀疑!
【讨论】:
以上是关于比较运算符的性能(>、>=、<、<=)的主要内容,如果未能解决你的问题,请参考以下文章