我正在比较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