哪个函数更快(p 是 MyObject 的原子公共(public) int 属性):
public static boolean check(MyObject o1, List<MyObject> list) {
int p = o1.p;
for (int i = 0; i < 1000000; i++) {
MyObject o = list.get(i);
if (o.p < p) return false;
}
return true;
}
或
public static boolean check(MyObject o1, List<MyObject> list) {
for (int i = 0; i < 1000000; i++) {
MyObject o = list.get(i);
if (o.p < o1.p) return false;
}
return true;
}
那么,通过使用局部变量 p,我们可以缓存对象属性调用,或者它是通过编译器优化内联完成的?
最佳答案
javac
编译器几乎没有进行任何优化。
然而,JIT 可以显着优化代码,包括将字段存储在寄存器中,
关于java - 多次访问自定义对象的原子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11941111/