Java android性能数组: access class getter directly or create local copy

标签 java android performance

从性能的角度来看,我有一个

class someClass {
     private List<type> data;
     public List<type> getData()
     {
          return data;
     }

}

class someOtherClass {
    private someClass instance;
    private someMethod() {

         // heavy loop
         for (...) {

         }
    }

}

在繁重的循环中直接调用效率更高(可能不止一次)

instance.getData().get(index).someOtherMethod(); 

或者更适合在循环之前做这样的事情:

localData = someClass.getData();

并使用 localData 来满足循环内的每个需求?


编辑:假设 getData() 方法做了一些其他事情,编译器优化仍然有效?

class someClass {
     private List<type> data;
     public List<type> getData()
     {
          makeSomething();
          return data;
     }

}

最佳答案

如果高效是你真正想要的,get(index)O(n) 加上你在一个 forloop 中,这使得 O(n^2 ) 大 O

与其使用常规的 forloop,不如使用增强的 forloop

示例:

for(someClass s: yourList){} 

现在不调用 get(index) 使用增强的 forloop 将使其成为 O(n) 而不是 O(n^2)

关于Java android性能数组: access class getter directly or create local copy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24258625/

相关文章:

javascript - for (var x in array) 和 for (var x=0, y= array.length; x<y; x++) 的性能差异

performance - 使用内联会降低性能吗?

java - 学习 Java 字节码和 JVM

java - 创建名为“entityManagerFactory”的 bean 时出错,无法正常运行应用程序

android - 如何在多个应用程序的库中运行单例(共享)服务?

android - 同步 Activity 和异步 Activity 之间的区别

java - java 中的运行时进程处理文件

java - 如何确定应用程序中使用了哪些 JAR

android - Android Bottom Sheet 无法对触摸使用react并且无法滚动

performance - 加速 IO 绑定(bind) OpenGL 应用程序