介绍采用各种方式遍历ArrayList的效率对比。
测试环境为:红米(Android 4.2.2、1.5G四核cpu、1G内存)
性能测试方式采用Debug.startMethodTracing和Debug.stopMethodTracing
用traceview查看trace数据
Android中ArrayList遍历方式的效率对比――工具/原料
eclipse 4.2 with adtAndroid中ArrayList遍历方式的效率对比――制作案例,生成trace文件
Android中ArrayList遍历方式的效率对比 1、
测试了三种遍历方式,前两种是采用index进行迭代,第三种是采用类似for each的用法。如图:
第一个和第二个的区别就在于是否先获取size。
Android中ArrayList遍历方式的效率对比 2、
测试例子是使用1-10000的ArrayList,如图:
Android中ArrayList遍历方式的效率对比――分析trace文件Android中ArrayList遍历方式的效率对比 1、
从trace文件中可以看出,sum1是最快的,其次是sum2、最后是sum3.
Android中ArrayList遍历方式的效率对比 2、
在sum3中,主要是hasNext、next、函数自身、intValue耗时
Android中ArrayList遍历方式的效率对比_遍历arraylist
Android中ArrayList遍历方式的效率对比 3、
在sum2中,则是函数自身、get、intValue、size耗时,说明获取size并没有优化,而是每次循环都取。
Android中ArrayList遍历方式的效率对比 4、
在sum1中,则是函数自身、get、intValue耗时。
Android中ArrayList遍历方式的效率对比 5、
sum1的CPU时间为 185.320,运行时间为:199.705
sum2的CPU时间为 272.289,运行时间为:286.180
sum3的CPU时间为 290.797,运行时间为:323.683
sum1和其他的差别还是挺大的