Java android性能数组:直接访问类getter或创建本地副本

时间:2014-06-17 08:01:03

标签: 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;
     }

}

1 个答案:

答案 0 :(得分:1)

如果您想要实际有效get(index) O(n)加上你在forloop中使O(n^2) big-O

使用增强的forloop

而不是使用常规的forloop

<强>样品:

for(someClass s: yourList){} 

现在,如果不使用增强型forloop调用get(index),则会O(n)而不是O(n^2)