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