关于java:使用>和>=之间是否有任何性能差异

Is there any performance difference between using > and >= in a loop

本问题已经有最佳答案,请猛点这里访问。

在循环中,我们保持终止条件,并在每次传递中检查这些条件。

我看过两种检查方法

1。 i > x i < x

第二种方法是

2。 i >= x i <= x

在进行逻辑比较时,这两种方法的性能是否存在差异?

两个操作所需的执行时间是否有任何差异?即>和> =?


这两个语句之间几乎没有性能差异,但这两个语句及其逻辑流之间存在显著差异。

例如:

  • 如果有一个循环一直运行到i <= 20,那么您将循环到i == 20
  • 如果有一个循环一直运行到i < 20,那么将循环到i == 19

如果有一个条件要求迭代值停在某个值之前,请确保选择最适合它的不等式。

不过,总的来说,如果这个布尔语句在运行时或性能上有任何差异,那么它几乎不会被注意到。我们不应该把优化工作建立在关闭这些语句的基础上。

*:另外,不要破坏优化规则1。


不,绝对没有区别。当编译器将其转换为汇编时,它将它们都转换为同一个cmp指令。


有时你更喜欢使用<=而不是<,例如在for循环中,我们通常从0转到length-1(如数组长度),我们使用<。但是如果你想把比较值也包括进来,这里是y,并且保持<逻辑,你会得到

1
2
3
for (x=0 ; x<y+1 ; x++) {
    ...
}

做这个的时候

1
2
3
for (x=0 ; x<=y ; x++) {
    ...
}

保存+1计算。

除此之外,大多数处理器都有小于或等于的指令,因此使用其中一个或另一个指令对性能没有影响。