加量批注
对业务使用资源的掌握,嗯!很有启发性。 是我们技术要懂业务的一个很好切入点,而且有数据支撑,又能性能优化。
工作后期也上线了 针对每个页面从3个性能维度的打分,我记得Google也出了一个SDK。这个后面再补充吧。
以下观点摘录自 《Android性能优化之道》 作者:赵子健
知识储备:
- 应用层
- 系统层
- 硬件层
应用层
加深对应用的了解:
- 有哪些线程,什么作用、什么业务使用,消耗多少CPU资源
- 内存占用多少,缓存命中率多少
- 启动过程,核心页面打开中的 所做,I/0阻塞耗时是多少?逻辑耗时是多少?CPU使用率多少?
系统层
Linux系统知识
- 进程管理和调度,内存管理、虚拟内存、锁、IPC
Android系统知识 - 虚拟机、核心服务、渲染、核心流程
硬件层
CPU特性
- 几个核心组成、哪些是大核心、哪些是小核心
- 将核心线程 如何绑定 到大核心运行
存储结构的寄存器、高速缓存、主存 - 核心数据如何放到 高速缓存
再进一步
汇编、编译器、编程语言、逆向等
- C++语言写核心模块、优化编译器内联、消除无用代码 来减小体积
- 逆向技术 优化系统逻辑
多角度思考
跳出设备本身去思考,
- 利用 Google Play 的哟花方案、上传一些 已编译好的机器码
- 服务器端渲染成 静态页面 下发,冷启动 先给一个加的静态页面
科学方式思考
从上而下
- 从这个整体考虑,设计全局的框架 管控业务对资源的使用
- 预加载框架、降级框架、或 全局监控
- 从下而上
- CPU利用率 缓存命中率。从 硬件 系统 应用 逐步向上思考
优化流程
需要考虑完整的流程
监控
- 监控之前说的各个指标
- 减少监控造成的性能耗损
- 对归因进行监控: 监控大集合、大图片、大对象 等内存中使用占比
优化 - 性能优化只是一个环节
数据收益获取 - 观察指标 变化
- A/B测试
- 核心指标监控
- 内存触顶率、崩溃率、用户留存率等与 用户体验直接相关的核心价值指标,获取优化的收益
防劣化
- 内存触顶率、崩溃率、用户留存率等与 用户体验直接相关的核心价值指标,获取优化的收益
- 完善线下性能测试、线上监控报警 等机制
- 每天通过Monkey测试内存泄漏的情况,及时发现、解决问题