对于Android开发,一般来说,执行以下操作会更昂贵: (例1)
for(int x=0; x < largeObjectCollection.size(); x++){
largeObjectCollection.get(x).SomeValueOne = "Sample Value 1";
largeObjectCollection.get(x).SomeValueTwo = "Sample Value 2";
largeObjectCollection.get(x).SomeValueThree = "Sample Value 3" ;
//Continues on to over 30 properties...
}
通过此实现(示例2)
for(int x=0; x < largeObjectCollection.size(); x++){
SampleObjectIns myObject = largeObjectCollection.get(x);
myObject.SomeValueOne = "Sample Value 1";
myObject.SomeValueTwo = "Sample Value 2";
myObject.SomeValueThree = "Sample Value 3" ;
//Continues on to over 30 properties...
}
在多次使用.get()
而不是每次迭代创建该对象的新实例时,我都找不到性能影响的细分。
我认为.get()
在资源方面没有太多用处,因为元素的位置已经知道,但是当处理许多属性时,最好只获取该对象一次如例2所示?
答案 0 :(得分:3)
在循环结构中多次调用'2015-02-28'
方法没有性能影响。
get()方法不会搜索任何类型的东西。该位置是已知的,因此RAM中的确切位置也是已知的。所以它只需要做一次RAM访问,这是一个c onstant time操作 - O(1)。
因此,您可以多次使用它而不会对性能产生任何影响。但更简洁的方法是使用get()一次,将其存储在局部变量中并重新使用该变量。
答案 1 :(得分:1)
第一个案例显然是可以做更多工作的案例。至少有两种可能性:
ArrayList.get
操作非常快;它基本上只是进行数组查找,它查找的值已经在缓存中,因为你只是查找了它。
因此,您的时间测量主要取决于您正在进行的其他工作。所以,即使你进行了29次以上get
次呼叫,也只是一个很小的数字的30倍。
答案 2 :(得分:0)
唯一的理由是,get
操作对于数组来说真的很快,这就是为什么性能几乎没有显着差异。