我在这里阅读了性能提示: 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还是会改变一切?只是想知道。
答案 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的设备上写,这种优化可能被归类为过早。