Java原语比较性能



我正在比较int a和int b。if(a>=b){...}
之间有性能差异吗if(a==b || a>b){...}?感谢

您可以随时查看字节码,以了解在较低级别上发生了什么。这并不意味着所有的编译器/选项都会做同样的事情,但我认为重要的是你正在使用的那个。此外,虽然它是一个较低的级别,但它不是最低级别。正如本网站其他地方提到的"Java中的优化主要由JIT编译器在运行时完成"。因此,在这种情况下,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;
}

在类文件上使用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       

最新更新