Java原始比较性能

Java primitive comparison performance

我正在比较 int a 和 int b。 if(a>=b){...}
之间是否存在任何性能差异 if(a==b || a>b){...}?谢谢

您始终可以查看字节码以了解较低级别发生的情况。这并不意味着所有的编译器/选项都会做同样的事情,但我想重要的是你正在使用的那个。此外,虽然它是较低级别,但它不是最低级别。如本网站 elsewhere 所述 "Optimization in Java is mostly done by the JIT compiler at runtime"。所以最终你无法避免相信 Java 在这种情况下会为你做明智的事情。

int foo(int a, int b) {
    if (a == b || a > b) return 1;
    return 0;
}

int bar(int a, int b) {
    if (a >= b) return 1;
    return 0;
}

在 class 文件上使用 javap -c 你可以看到:

int foo(int, int);
Code:
   0: iload_1       
   1: iload_2       
   2: if_icmpeq     10
   5: iload_1       
   6: iload_2       
   7: if_icmple     12
  10: iconst_1      
  11: ireturn       
  12: iconst_0      
  13: ireturn       

int bar(int, int);
Code:
   0: iload_1       
   1: iload_2       
   2: if_icmplt     7
   5: iconst_1      
   6: ireturn       
   7: iconst_0      
   8: ireturn