性能是衡量应用好坏的标杆之一,而延迟、卡顿等问题也是影响用户使用体验的重要因素,应用性能调试和优化是保证应用质量非常重要的一环。
由软件绿色联盟发布的《软件绿色联盟应用体验标准3.0_性能标准》中对各分类应用的启动时间、帧率、内存占用、CPU占用等方面提出了要求和测试说明,希望帮助开发者避免雷区,获得应用品质提升。本文将重点围绕性能调测及相关案例进行说明。
性能调测的工具有很多,Systrace工具是较为常用的一个,它适用于分析整机系统性能及动态场景的性能问题。
Systrace抓取到Log之后利用Google浏览器的Trace工具可以以图形界面的形式直观的展现出来,可以看出当前系统的整体状态,CPU调度,任务及各线程的状态等内容。主要注意的是,使用Systrace工具时,要求使用Root并且挂载了Debugfs分区的手机,因此一般建议抓取时间设置为5~10S,Trace Buffer Size设置不宜过大。
主要有两种使用方法:
DDMS(Android Studio)工具抓取;
命令行抓取,详情可以参考Google网站
(http://developer.android.com/tools/help/systrace.html)
Systrace文件抓取:工具启动后会设置一些过滤选项,根据实际情况而定,可以选择自己需要的选项,设置好后点击“ok”,工具就开始抓取Log,开始在手机上做你的操作,5S时间到Log自动保存到设置的路径下。
Systrace文件分析:打开Chrome浏览器地址中输入chrome://tracing,load刚才抓取的Systrace文件就可以以图形界面的方式展开,如下图所示:
某应用在聊天列表界面发生了卡顿,通过抓取Systrace发现,存在单帧时长超长问题。
通过Trace可以看到,在当前帧的绘制中做了过多的界面布局和资源读取加载,说明当前界面比较复杂,开发者需针对这方面进行优化。
游戏是一种特殊的应用,特征是重度化,并且大部分使用三方图形引擎,越过系统的view系统直接通过OpenGL与GPU对接。因此分析游戏时,主要关注丢帧阶段的CPU/GPU负载、频率,来判断当前系统资源是不是已经不能满足游戏的流畅运行。
通过Systrace获取到丢帧的时间段
查看当前时间段的CPU状态
如果当前运行在大核,并且频率已近达到最高时仍然会出现丢帧,说明当前游戏的负载高,此时可以考虑多线程等方式在其他核上分摊任务。
近期软件绿色联盟将发布系列应用体验标准解读文章,欢迎持续关注。