APP FPS 应用流畅度测试

APP FPS 应用流畅度测试 

开启 Profile GPU rendering 

Settings→System→Advanced→Developer options→查找 profile→找到并单击 Profile GPU rendering→In adb shell dumpsys gfxinfo 

打开要测试的 app 

adb shell dumpsys gfxinfo 包名

adb shell dumpsys gfxinfo welab.bank.mobile.stage

由下图可以看出耗时(Tanky frames),这个非常大,表示这个app不合格

帧中有 9190 帧的耗时超过了 16ms,卡顿概率为 95.69%

 Draw + Process + Execute总和的值大于16则为不正常,小于16毫秒表示是正常

 将数据复制到excel中,计算出 Draw + Process + Execute总和,然后用16作为参考标准

选中单元格,当右下角变成 “+”号,双击可以填补填充16,计算结果也一样的操作

 选中需要在图标中显示的数据,生成折线图

 

 

Graphics info for pid 1331 [com.tencent.mm]:
表明当前 dump 的为 com.tencent.mm 的帧信息,pid 为 1331。 
Total frames rendered: 2218:本次 dump 搜集了 2218 帧的信息。 
Janky frames: 26 (1.17%):帧中有 26 帧的耗时超过了 16ms,卡顿概率为 1.17%。 
Number Missed Vsync: 3:垂直同步失败的帧 
Number High input latency:2213:处理 input 时间超时的帧 
Number Slow UI thread: 1:因为 ui 线程导致 slow 的帧 
Number Slow bitmap uploads: 0:因为 bitmap 加载 slow 的帧 
Number Slow issue draw commands: 3:因为绘制导致 slow 的帧

Draw: 表示在 Java 中创建显示列表部分中的 OnDraw()方法占用的时间。 
Prepare:表示渲染引擎准备时间,不关注此项。 
Process:表示渲染引擎执行显示列表所花的时间,view 越多,时间就越长。 
Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。 
Draw + Process + Execute = 完整显示一帧 ,这个时间要小于 16ms 才能保存每秒 60 帧。 

通过 execl 进行表格处理可以直观的查看软件的流畅度 
        只保留 Process、Draw、Execute 
        将三列加和 
        绘制线图 
                16ms 以上的卡顿,需要优化 

将柱状图显示在手机中

需要先在手机中设置

Settings→System→Advanced→Developer options→查找 profile→on screen as bars 
        结果以图形形式显示在设备中 

        

开启此功能后,随着屏幕刷新,界面上会滚动显示垂直的柱状图来表示每帧画面所 需要渲染的时间,柱状图越高表示花费的渲染时间越长。 

每个直方条代表一帧,每个直方条的高度表示该帧渲染所用的时间(以毫秒为 单位)
界面中间一根绿色水平线代表 16ms,每一帧的柱状线都在这条绿线以下,才 能避免出现由丢帧引起的卡顿。 
颜色含义(Android 6.0 及更高版本中的竖条区段)

竖条区段渲染阶段说明
交换缓冲区表示 CPU 等待 GPU 完成其工作的时间。如果此竖条升高,则表示应用在 GPU 上执行太多工作。
命令问题表示 Android 的 2D 渲染器向 OpenGL 发起绘制和重新绘制显示列表的命令所花的时间。 此竖条的高度与它执行每个显示列表所花的时间的总和成正比—显示列表越多,红色条就越高。
同步和上传表示将位图信息上传到 GPU 所花的时间。大区段表示应用花费大量的时间加载大量图形。
绘制表示用于创建和更新视图显示列表的时间。如果竖条的此部分很高,则表明这里可能有许多自定义视图绘制,或 onDraw 函数执行的工作很多。
测量/布局表示在视图层次结构中的 onLayout 和 onMeasure 回调上所花的时间。大区段表示此视图层次结构正在花很长时间进行处理。动画
动画表示评估运行该帧的所有动画程序所花的时间。如果此区段很大,则表示您的应用可能在使用性能欠佳的自定义动画程序,或因更新属性而导致一些意料之外的工作。
输入处理表示应用执行输入 Event 回调中的代码所花的时间。如果此区段很大,则表示此应用花太多时间处理用户输入。考虑将此处理任务分流到另一个线程。
其他时间/VSync 延迟

 表示应用执行两个连续帧之间的操作所花的时间。它可能表示 界面线程中进行的处理太多,而这些处理任务本可以分流到其 他线程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值