安卓 App 性能专项测试之流畅度深度解析-中篇

背景

毫无疑问,流畅度在Android众多性能指标中其重要程度不言而喻,而且也是最为复杂的一个。为了描述这样的一个维度,业界大佬纷纷提出了各种指标来对其进行衡量。在上篇文章中给大家介绍了FPS这一项指标的由来及卡顿的原理(丢帧),不熟悉的小伙伴可以点击进入http://www.lemfix.com/topics/245先去了解一番。
但是仅凭借fps指标来去衡量流畅度是远远不够的。

连续绘制的Android应用

对于连续绘制的应用(游戏、视频)我们可以选用fps指标。

步骤如下:

  • 将手机通过USB线连接之PC端,开发者选项中USB调试打开,保证adb devices能够检测到设备
  • 再次进入到开发者选项中,找到GPU呈现模式分析

1416742-20190619150529316-2101571210.png

  • 选择“在adb shell dumpsys gfxinfo中”

1416742-20190619150539170-934983420.png

  • 查询自己要测试应用的包名,可有如下方式:

    1. app运行在前台,通过adb shell dumpsys activity | find "mFocusedActivity"查询
    2. aapt工具解析APK安装包,aapt dump badging APK安装包路径
    3. 等等...
  • 启动测试App应用,测试对应的场景,结束后在命令行输入adb shell dumpsys gfxinfo 应用包名

1416742-20190619150552789-1413726641.png

Draw+Prepare+Process+Execute=完整显示一帧的时间

这个时间需要小于16.67ms才能保证不丢帧

fps数据分析:

计算总数据的行数(跳过第一行)

frameCount=rowNum(总行数)

计算每帧的渲染时间

renderTime=Draw+Prepare+Process+Execute

当渲染时间renderTime大于16.67ms,该帧渲染超时,算一次丢帧,需要用掉额外的Vsync个数为(多需要的同步信号):

vsyncOverNum=renderTime/16.67-1

fps计算公式为

fps=frameCount*60 / frameCount+vsyncOverNum

非连续绘制的应用

实际上在现在很多的Android应用中,很少有需要不断的去绘制的场景。比如:

fps很低,为什么我们感觉不到卡顿?

因为本来就用不到那么高的fps,如画一个动画0.5秒就画完了,那么fps最高也就只有30帧/秒,而如果屏幕根本就没有绘制需求,即屏幕显示的画面是静止的,那fps就是为1。

还有一种情况是:app停止操作后,fps还一直变化,这样的话fps是否会影响fps准确性?

app停止操作后fps还一直变化,是因为屏幕每一帧的合成都是针对手机里的所有进程,那么即使你的App停止了绘制,手机里其他进程还可能在绘制,比如通知栏的各种消息,这会导致fps继续变化。

究竟如何衡量非连续绘制应用的流畅度?

在上一篇文章我们讲过Vsync信号会通知系统开始绘制并且显示在屏幕LCD上,如果某一个Vsync信号发过来绘制没有及时完成,那么Vsync会等到下一周期(16.67ms)再次发送。所以我们可以根据Vsync信号的发送来得到流畅度情况-SM(SMoothness)指标。

恰好有这样一款工具可以辅助我们得到-腾讯GT(前提是需要将手机root)

1416742-20190619151059605-157160471.png

勾选要调试的进程

1416742-20190619150622733-1600696234.png

返回到参数界面可以看到SM参数已被勾选

1416742-20190619150632361-584250407.png

点击红色按钮即可开始测试,场景测试完毕之后即可保存

1416742-20190619150640988-670817641.png

得到的就是SM相关的数据。

转载于:https://www.cnblogs.com/yyoba/p/11051404.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值