一款好应用,除了吸引人的功能和交互外,还要特别关注用户可感知的操作和响应速度,性能就显得尤为重要。为此,小编专门策划了APP性能设计及优化专题,将为广大读者介绍应用性能设计的整体思路、具体的性能优化建议、典型的影响性能的不良实现等,本期首先介绍应用性能设计的整体思路。
软件性能是指软件系统或构件对于及时性目标的符合程度,是软件的关键质量属性之一。性能指标主要体现在时间行为(处理/响应时间、吞吐量等)、资源占用量(RAM、ROM、CPU等)等。性能设计贯穿整个软件生命周期的各个阶段,不只局限于方案设计和代码开发阶段,运维阶段的性能维测(可度量、可发现、可定位)也极其重要。
一款好的应用要以快、稳、小、省为目标,力求流畅、稳定、安装包小,同时实现省电省流量,而想要实现这个目标,就要在方案设计时规避可能出现的卡顿、内存使用不合理、代码逻辑乱、代码质量差、安装包过大等问题。
卡顿类型及调优工具
1. 常见卡顿类型
卡顿的常见场景可分为UI绘制、应用启动、页面跳转、事件响应4种,如下图所示:
上述四种卡顿类型的根本原因可以归纳为界面绘制和数据处理两大类:
界面绘制:主要原因是绘制的层级深、页面复杂、刷新不合理,主要体现在UI和启动后初始界面以及跳转到页面的绘制上。
数据处理:主要原因是数据处理量太大,一般分为三种情况,一是数据处理在UI线程,二是数据处理占用CPU高,导致主线程拿不到时间片,三是内存增加导致GC频繁,从而引起卡顿。
2. 性能调优
性能调优的主要原则可以归纳为三点:
先粗后细:先基于业务场景制定性能指标及测试用例,不达标后,再对流程进行分解细化并性能测量;
先大后小:先找到性能最大瓶颈(执行次数*每次执行时长)进行优化,其收益明显;
问题放大:先解决资源(CPU、内存、IO等)供给充分的情况下不达标问题,然后通过减少资源供给,把卡顿问题放大后,更容易发现问题根因。
由于性能问题复现和定位都存在一定的困难,因此借助相应的的调试工具是十分必要的。常见的如Profiler、Systrace、Perfetto等。
本篇概括介绍了性能设计的整体思路、常见卡顿类型及性能调优工具等,下篇将给出性能优化的一些详细建议,欢迎大家持续关注。