java - 多次访问自定义对象的原子属性

标签 java optimization

哪个函数更快(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/

相关文章:

python - Julia:龙格库塔法的计算时间

java - 使Jackson在序列化时不输出类名(使用Spring MVC)

java - 实体之间的多对多关系问题

python - Python 的 "built-in method acquire"是什么?我怎样才能加快速度?

mysql - 盲目更新还是在哪里更新?

mysql - 从数百万条记录中选择一条记录慢

java - 如何在我的 flutter android 应用程序中添加 .aar 文件作为包?

java - 我应该用什么代替 FlowLayout()?

java - GregorianCalendar 构造函数是否检查无效输入?

c++ - 绳索: "large enough to benefit from cache effects"是什么?