Java原始比较性能

时间:2015-03-26 22:38:10

标签: java performance micro-optimization

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

1 个答案:

答案 0 :(得分:0)

您可以随时查看字节代码,以查看较低级别发生的情况。这并不意味着所有编译器/选项都会这样做,但我认为重要的是你正在使用的那个。此外,虽然它是较低的水平,但它不是最低水平。正如本网站上提到的elsewhere“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