【问题标题】:Is performance of "less/greater than than" better than "less/greater than or equal to"“小于/大于”的性能是否优于“小于/大于或等于”
【发布时间】:2014-11-19 12:24:55
【问题描述】:

比较小于/大于小于/大于或等于的计算性能是否更好?

直觉上可以认为小于/大于略好。

编译器可以使用一些技巧使比较看起来相同吗?

编译器可以消除例如小于或等于 小于 将边界加一,但如果边界是“活动的”,则不能这样做。

【问题讨论】:

  • 密切相关:Is < faster than <=?
  • 这取决于目标架构,所以我认为这个问题不能笼统地回答。

标签: performance theory compiler-theory


【解决方案1】:

几乎在每一个现代 CPU 上,都有比较/无跳转和比较/跳转等指令,它们所花费的时间完全相同,因为它运行完全相同的硬件模数,包括或不包括“等于”位。

在这种情况下,计算“不小于”(因此“小于”)是免费的;对于无符号值,它相当于从二进制补码减法中进位,CPU 已经这样做了。计算相等更难:CPU 必须确定减法结果的所有位都为零;对于 64 位 CPU,这简直就是一个 64 位与门,它非常大,因此速度很慢。 CPU 设计人员知道这一点,并构建了非常快速的网络来快速检测到这一点,因此它不会成为瓶颈。

所以答案是“否”,或者说清楚,它们花费相同的时间,并且没有编译器技巧可以改变这一点。

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 2011-12-21
    相关资源
    最近更新 更多