ART中的ArrayList循环性能(Android运行时环境)

时间:2014-07-23 21:51:47

标签: java android performance arraylist

我在这里阅读了性能提示: http://developer.android.com/training/articles/perf-tips.html#Loops 当时它看起来像

for(i=0; i <= objectArrayList.size() ; ++i){}
出于性能原因,

循环是优选的,对于每个&#34;或者&#34;增强&#34;风格循环

for(Object object : objectArrayList){}

这仍然适用于ART还是会改变一切?只是想知道。

2 个答案:

答案 0 :(得分:1)

不是Android专家:)

似乎对我来说过早优化。那么你有一个有效的问题。参见

 for(i=0; i <= objectArrayList.size() ; ++i){
       Object o = objectArrayList.get(i);
       /// do stuff
    }

所以它每次遍历列表以获取该特定元素。

for(Object object : objectArrayList){
  // do stuff
}

Uses iterator,比正常for快一点。步骤到下一个元素。

虽然我更喜欢for-each因为可读性,因为所有最近的jvm都超级快;)

答案 1 :(得分:1)

Dalvik和ART之间的区别可以真正简化为指出。 Dalvik是JIT(即时),ART是AOT(Ahead-of-Time)。这也指的是可执行代码的生成。因此,对于dalvik有效的所有指南也适用于ART。

在使用ArrayList的情况下,在内存分配方面更好的解决方案是计数循环,因为您不为迭代器创建其他实例。但就代码维护而言,增强功能更容易。

目前用于Android开发人员的指南几年前写过。更新但如果你在支持android K的设备上写,这种优化可能被归类为过早。