0

是代码

 while(currentLine <= endLine)  
  {
     // more code
     currentLine++;  
  }

相当于

 while(currentLine < endLine || currentLine == endLine)
  {
     // more code
     currentLine++;   
  }

在性能方面?

4

2 回答 2

8

<=操作通常编译为单个字节码指令if_icmpleifle. JVM 如何解释这通常取决于机器,但大多数硬件都支持将 < 和 <= 作为单个指令进行评估。因此,您可能应该期望 for 的性能<=<.

Java 编译器可能会将第二个代码重写为第一个代码,这意味着不会有性能损失。然而,这是一个实现细节。

一般来说,除非您确定它们是性能瓶颈的原因,否则不要担心这些类型的微优化。像这样的决定会对程序运行时产生深远影响的情况极为罕见。

希望这可以帮助!

于 2012-05-30T20:06:20.517 回答
0

好吧,你可能会争论短路逻辑是否比比较更有效,我会选择第一个,无论如何如果优化器足够聪明,那么你如何编写它并不重要。

于 2012-05-30T20:09:01.623 回答