性能优化

标签: 性能优化

Android性能优化总结

持续更新ing 性能优化主要几个方面 流畅性优化 内存优化 CPU 优化 稳定性优化 安装包优化 流畅性 人眼和大脑之间的协作能感受到的最大帧率就是每秒 60 Fps 画面更新,那么要求每一帧的绘制时间就是 1000/60 = 16.67ms,所以Android系统要求每一帧尽可能在 16ms 内绘制完成 怎么看帧率? adb shell dumpsys gfxinfo "com.baidu.hi.debug" // 或者 开发者模式 > GUP 呈现模式分析 > 屏幕上显示条形图 屏幕下方的柱状图每一根代表一帧,其高度表示“渲染这一帧耗时”, 绿线代表16ms标准。每一帧的渲染过程拆分成了8个步骤: 1) Swap Buffers:表示处理任务的时间,也可以说是CPU等待GPU完成任务的时间,线条越高,表示GPU做的事情越多; 2)

阅读全文...

[转]Android性能优化典范 - 第3季

原文地址:http://hukai.me/android-performance-patterns-season-3/ Android性能优化典范的课程最近更新到第三季了,这次一共12个短视频课程,包括的内容大致有:更高效的ArrayMap容器,使用Android系统提供的特殊容器来避免自动装箱,避免使用枚举类型,注意onLowMemory与onTrimMemory的回调,避免内存泄漏,高效的位置更新操作,重复layout操作的性能影响,以及使用Batching,Prefetching优化网络请求,压缩传输数据等等使用技巧。下面是对这些课程的总结摘要,认知有限,理解偏差的地方请多多交流指正! 1)Fun with ArrayMaps 程序内存的管理是否合理高效对应用的性能有着很大的影响,有的时候对容器的使用不当也会导致内存管理效率低下。Android为移动操作系统特意编写了一些更加高效的容器,例如SparseArray,今天要介绍的是一个新的容器,叫做ArrayMap。 我们经常会使用到HashMap这个容器,它非常好用,但是却很占用内存。下图演示了HashMap的简要工作原理: 为了解决HashMap更占内存的弊端,Android提供了内存效率更高的ArrayMap。它内部使用两个数组进行工作,其中一个数组记录key hash过后的顺序列表,另外一个数组按key的顺序记录Key-Value值,如下图所示: 当你想获取某个value的时候,ArrayMap会计算输入key转换过后的hash值,然后对hash数组使用二分查找法寻找到对应的index,然后我们可以通过这个index在另外一个数组中直接访问到需要的键值对。如果在第二个数组键值对中的key和前面输入的查询key不一致,那么就认为是发生了碰撞冲突。为了解决这个问题,我们会以该key为中心点,

阅读全文...