我正在比较int a和int b。 if(a>=b){...}
与
之间是否存在性能差异?
if(a==b || a>b){...}
?感谢
答案 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