搜狐首页 科技 法医秦明

手机搜狐

SOHU.COM

Android性能优化之被忽视的优化点

(点击上方公众号,可快速关注)

来源:Sunzxyong

http://blog.csdn.net/u010687392/article/details/50035061

如有好文章投稿,请点击 → 这里了解详情

对于性能优化这个知识点来说,实在是太广了,博主本人也一直非常关注这方面的学习,而对于性能优化来说它包括了非常非常非常多方面,比如:I/O的优化、网络操作的优化、内存的优化、数据结构的优化、代码层次的优化、UI渲染优化、CPU资源使用率的优化、异常处理的优化等等等等。。。

本篇文章就博主本人的理解来讲述一些在Android开发中可以优化的地方

ArrayList和Vector

ArrayList和Vector都是内部以数组实现的List,它们两唯一的区别就是对多线程的支持,ArrayList是线程不安全的,而Vector内部对大多数方法都做了同步,是线程安全的,既然是线程安全的,所以性能方面肯定不如ArrayList了(当然想法肯定是对的),不过这需要看哪方面了,ArrayList在add、get、remove等操作效率肯定是高于Vector的,而在内存方面,Vector却比ArrayList表现的更好,这归根都是ArrayList的扩容策略导致的,稍后分析。

实现RandomAccess接口的集合使用fori遍历

先谈谈List集合的遍历方式,有三种:foreach、iterator、fori。

而在开发中一般需要遍历时首选肯定是foreach了,因为它效率高,这个观点没错,不过需要分场合了。

下面是我用这三种方式测试遍历有100w条数据的ArrayList集合:

long start = System.currentTimeMillis();

for (int i = 0; i size; i++) {

data.get(i);

}

long end = System.currentTimeMillis();

Log.v("zxy","fori花费:"+(end-start));

start = System.currentTimeMillis();

for (Integer integer : data) {

}

end = System.currentTimeMillis();

Log.v("zxy","foreach花费:"+(end-start));

IteratorInteger iterator = data.iterator();

start = System.currentTimeMillis();

while (iterator.hasNext()){

iterator.next();

}

end = System.currentTimeMillis();

Log.v("zxy","iterator花费:"+(end-start));

精选