`
xiaoheichuangtianya
  • 浏览: 27331 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

android 性能优化

阅读更多
public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable


public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable


public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable


因为Vector和list内部由数组实现又实现了RandomAccess这个接口,表示支持随机访问,所以随机访问 fori要快于Iterator要快于foreach


1w条的vector
fori 花费了4
foreach 花费了8
iterator 花费了6
1w条的LinkedList
fori 花费了62678
foreach 花费了5
iterator 花费了5


预知容量的情况下构造ArrayList时尽量指定初始大小
ArrayList内部的扩容策略是当其所存储的元素数量超过它已有的大小时,它就会以1.5倍的容量进行扩容,也就是假如当前ArrayList的容量为10000,那么它在需要再存储一个元素时,即第10001个元素,由于容量不够而进行一次扩容,而ArrayList扩容后的容量则变为了15000,而多出了一个元素就多了5000个元素的空间,这太浪费内存资源了,而且扩容还会导致整个数组进行一次内存复制,而ArrayList集合默认大小为10,因此合理的设置ArrayList的容量可避免集合进行扩容
而Vector内部扩容策略为按需扩容,每次+1

同样,在众多Map集合中也有各自扩容策略,比如HashMap每次扩容时新容量等于原始的容量*2。在我们常用做字符串拼接的StringBuffer和StringBuilder内部,实际上也是有扩容策略,默认为扩容为原始的1.5倍。

所以,在这些需要扩容的api上,如果预先知道了数据的大小,则预先设置,这样不仅可以避免扩容导致的空间浪费,而且还可避免内部调用System.arraycopy()进行大量数据复制。

如果一个方法不需要使用该对象的成员,那么把该方法设为static

静态调用该方法比对象调用该方法快15%~20%,因为这样可以从方法签名上就可以看出该方法调用不会影响该对象的状态

巧用final关键字
比如:static int AGE = 10;当10在后面被引用时,这时会有一个字段查找的过程,对于int类型也就是查找方法区中的整型常量池,而对于final的常量,则省去了这个过程,比如:static final int AGE = 10;在使用到AGE的地方将直接用10代替。

优先考虑系统中提供的代码而不是自己写

系统内置了许多非常方便的api供我们使用,比如:System、Arrays、Collections、String等内置了许多方法api,这比我们自己手写方便多了,除了这个外,对于Android来说许多api都使用了底层C/C++实现,所以效率上也比我们自己写快,同样,对于系统api,DVM往往也会使用内联的方式提高效率
慎用异常

慎用异常并不是不用异常,而是指程序中用抛异常的方式来执行某些操作,比如有些人会以强抛异常方式来中断某些操作等。因为抛异常时都会执行fillInStackTrace();方法,该方法作用就是重新调整堆栈,这使得没有必要用异常的地方一定要避免使用
分享到:
评论

相关推荐

    Android性能优化.pdf

    Android性能优化:ANR问题解析 crash监控方案 启动速度与执行效率优化 内存优化 耗电优化 网络传输与数据存储优化 APK大小优化

    Android性能优化典范

    新年伊始,Google发布了包含16个短视频的Android性能优化典范专题,详解Android系统中有关性能问题的底层工作原理,并介绍了如何通过工具找出性能问题以及提升性能的建议。本文作者对这些问题和建议进行了总结梳理。...

    Android性能优化.xmind

    Android性能优化.xmind

    Android性能优化

    android 性能优化 消除Android 卡顿 优化

    android性能优化

    1、 通过高速摄像机或者代码内置测试出各类应用apk的响应时间,其中主要包括:桌面、电话、联系人、短信、相机、相册、云邮箱、音乐、视频、应用中心、安全精灵、主题...,再查看数据加载过程中是否存在优化的可能...

    Android 性能优化

    Android 性能优化

    Android性能优化系列之内存优化

    在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(GarbageCollection,GC)完成的,程序员不需要通过调用函数来释放内存,但也随之带来了内存泄漏的可能,上篇博客,我介绍了Android性能优化系列之...

    Android性能优化学习手册

    1、性能优化专家:具备深度性能优化与体系化APM建设的能力。 2、架构师:具有丰富的应用架构设计经验与心得,对Android Framework层与热门三方库的实现原理与架构设计了如指掌。 3、音视频/图像处理专家:毫无疑问,...

    Android性能优化 ANR 分析指导文档

    Android性能优化 ANR 分析指导文档

    Android性能优化-大厂实战全解析

    ‍《Android性能优化-大厂实战全解析》

    Android性能优化来龙去脉总结

    以下是本人在工作中对经历过的性能优化的一些总结,依据故事的发展路线,将其分为了5个部分,分别是:常见的性能问题;产生性能问题的一些可能原因;解决性能问题的套路;代码建议及潜在性能问题排查项。通俗来讲,...

Global site tag (gtag.js) - Google Analytics