加量批注
非常具有启发性,优化的手段 要取决于Context 场景 机型,预加载、多线程、缓存 在不通的硬件环境中,要相应增加、减少。
以下观点摘录自 《Android性能优化之道》 作者:赵子健
本质
充分且合理使用设备硬件资源,提高用户体验、增加企业收益
为什么叫合理?
预加载、多线程、缓存,不一定能优化性能。
例如:
- 当CPU使用率已经很高了,预加载、多线程 只会雪上加霜,还会导致 劣化效果。(相反,CPU使用率较低就可以)
- 当内存占用已经很多了,使用更多的缓存,只会导致系统频繁GC,甚至OOM问题
很多时候,之所以性能优化不佳,是因为制定优化方案时,没有从性能优化本质思考。 只有 充分且合理的使用硬件资源 去制定方案,才能确保 优化方案有效。
硬件资源
- CPU
- 中低端机型,CPU性能差,容易过载:降低PCU的消耗合理使用 CPU资源
- 减少线程、减少和关闭预加载,让更多的CPU资源 分配给 主线程或核心任务。
- 高端机型,CPU性能好,充分使用CPU资源
- 中低端机型,CPU性能差,容易过载:降低PCU的消耗合理使用 CPU资源
- 内存
- 针对设备内存大小,设置缓存大小
- 磁盘
- 电池
- 蓝牙等
取得收益
选取真正能体现程序 对用户体验和收益 产生影响的指标
-
制定指标
- 速度指标:启动速度、页面打开速度
- 内存指标:PSS值(内存实际占用物理内存量)、 Java内存使用率、Native 内存占用率
- PSS改为 OOM率、GC次数等 更能体现对 用户体验和收益影响
- 例如PSS(实际内存占用量)下降了100MB,是好,还是坏。(可能打开速度变慢,性能体验变差。
- 稳定性指标:Crash率、OOM率
-
采集指标
- 要做到 精确、一致并尽量减少 对性能的消耗