使用 adb shell dumpsys gfxinfo测试ui性能

参考:

https://www.cnblogs.com/JianXu/p/5376642.html

https://blog.csdn.net/xiangyuxiangyu123/article/details/53866459

在adb中输入

adb shell dumpsys gfxinfo calc.superdy.ttest  命令

则可以获得类似如下信息

Applications Graphics Acceleration Info:  
Uptime: 91536636 Realtime: 111601319

** Graphics info for pid 17150 [calc.superdy.ttest] **               pid 17150

Stats since: 81186624136580ns
Total frames rendered: 5                                                   共收集了5帧信息
Janky frames: 1 (20.00%)                                                  卡帧
50th percentile: 15ms
90th percentile: 89ms
95th percentile: 89ms
99th percentile: 89ms
Number Missed Vsync: 1                                                  垂直同步失败的帧
Number High input latency: 0                                            处理input时间超时的帧
Number Slow UI thread: 1                                                 因为ui线程导致slow的帧
Number Slow bitmap uploads: 0                                        因为bitmap加载slow的帧
Number Slow issue draw commands: 1                              因为绘制导致slow的帧
HISTOGRAM: 5ms=1 6ms=0 7ms=0 8ms=0 9ms=0 10ms=0 11ms=1 12ms=0 13ms=0 14ms=0 15ms=1 16ms=1 17ms=0 18ms=0 19ms=0 20ms=0 21ms=0 22ms=0 23ms=0 24ms=0 25ms=0 26ms=0 27ms=0 28ms=0 29ms=0 30ms=0 31ms=0 32ms=0 34ms=0 36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 53ms=0 57ms=0 61ms=0 65ms=0 69ms=0 73ms=0 77ms=0 81ms=0 85ms=0 89ms=1 93ms=0 97ms=0 101ms=0 105ms=0 109ms=0 113ms=0 117ms=0 121ms=0 125ms=0 129ms=0 133ms=0 150ms=0 200ms=0 250ms=0 300ms=0 350ms=0 400ms=0 450ms=0 500ms=0 550ms=0 600ms=0 650ms=0 700ms=0 750ms=0 800ms=0 850ms=0 900ms=0 950ms=0 1000ms=0 1050ms=0 1100ms=0 1150ms=0 1200ms=0 1250ms=0 1300ms=0 1350ms=0 1400ms=0 1450ms=0 1500ms=0 1550ms=0 1600ms=0 1650ms=0 1700ms=0 1750ms=0 1800ms=0 1850ms=0 1900ms=0 1950ms=0 2000ms=0 2050ms=0 2100ms=0 2150ms=0 2200ms=0 2250ms=0 2300ms=0 2350ms=0 2400ms=0 2450ms=0 2500ms=0 2550ms=0 2600ms=0 2650ms=0 2700ms=0 2750ms=0 2800ms=0 2850ms=0 2900ms=0 2950ms=0 3000ms=0 3050ms=0 3100ms=0 3150ms=0 3200ms=0 3250ms=0 3300ms=0 3350ms=0 3400ms=0 3450ms=0 3500ms=0 3550ms=0 3600ms=0 3650ms=0 3700ms=0 3750ms=0 3800ms=0 3850ms=0 3900ms=0 3950ms=0 4000ms=0 4050ms=0 4100ms=0 4150ms=0 4200ms=0 4250ms=0 4300ms=0 4350ms=0 4400ms=0 4450ms=0 4500ms=0 4550ms=0 4600ms=0 4650ms=0 4700ms=0 4750ms=0 4800ms=0 4850ms=0 4900ms=0 4950ms=0

耗时与帧数统计表

 

Caches:
Current memory usage / total memory usage (bytes):
  TextureCache                0 / 100663296
  Layers total          0 (numLayers = 0)
  RenderBufferCache           0 / 12582912
  GradientCache               0 /  1048576
  PathCache                   0 / 40894464
  TessellationCache           0 /  1048576
  TextDropShadowCache         0 /  7340032
  PatchCache                  0 /   131072
  FontRenderer A8         16083 /  4194304
    A8   texture 0        16083 /  4194304
  FontRenderer RGBA           0 /        0
  FontRenderer total      16083 /  4194304
Other:
  FboCache                    0 /        0
Total memory usage:
  4194304 bytes, 4.00 MB


Pipeline=FrameBuilder
Profile data in ms:

        calc.superdy.ttest/calc.superdy.ttest.MainActivity/android.view.ViewRootImpl@f4346bc (visibility=8)
View hierarchy:

  calc.superdy.ttest/calc.superdy.ttest.MainActivity/android.view.ViewRootImpl@f4346bc
  17 views, 16.73 kB of display lists


Total ViewRootImpl: 1
Total Views:        17
Total DisplayList:  16.73 kB

 

增加参数:adb shell dumpsys gfxinfo "calc.superdy.ttest" framestats

---PROFILEDATA---
Flags,IntendedVsync,Vsync,OldestInputEvent,NewestInputEvent,HandleInputStart,AnimationStart,PerformTraversalsStart,DrawStart,SyncQueued,SyncStart,IssueDrawCommandsStart,SwapBuffers,FrameCompleted,DequeueBufferDuration,QueueBufferDuration,
0,93101236538605,93101253205271,9223372036854775807,0,93101261467191,93101261557712,93101261564535,93101263859847,93101266846097,93101266948649,93101267022920,93101277911097,93101282488754,568000,1112000,
---PROFILEDATA---

Framestats数据格式

由于数据块以CSV格式输出,因此将其粘贴到您选择的电子表格工具中非常简单,或者通过脚本进行收集和分析。下表说明了输出数据列的格式。所有的时间戳都是纳秒。

  • FLAGS

    • FLAGS列为'0'的行可以通过从FRAME_COMPLETED列中减去INTENDED_VSYNC列计算其总帧时间。
    • 如果非零,则该行应该被忽略,因为该帧的预期布局和绘制时间超过16ms,为异常帧。
  • INTENDED_VSYNC

    • 帧的的预期起点。如果此值与VSYNC不同,是由于 UI 线程中的工作使其无法及时响应垂直同步信号所造成的。
  • VSYNC

    • 花费在vsync监听器和帧绘制的时间(Choreographer frame回调,动画,View.getDrawingTime()等)
    • 要了解有关VSYNC的更多信息以及它如何影响应用程序,请查看 Understanding VSYNC视频。
  • OLDEST_INPUT_EVENT

    • 输入队列中最旧输入事件的时间戳,如果没有输入事件,则输入Long.MAX_VALUE。
    • 此值主要用于平台工作,对应用程序开发人员的用处有限。
  • NEWEST_INPUT_EVENT

    • 输入队列中最新输入事件的时间戳,如果帧没有输入事件,则为0。
    • 此值主要用于平台工作,对应用程序开发人员的用处有限。
    • 然而,通过查看(FRAME_COMPLETED - NEWEST_INPUT_EVENT),可以大致了解应用程序添加的延迟时间。
  • HANDLE_INPUT_START

    • 将输入事件分派给应用程序的时间戳。
    • 通过查看这段时间和ANIMATION_START之间的时间,可以测量应用程序处理输入事件的时间。
    • 如果这个数字很高(> 2ms),这表明程序花费了非常长的时间来处理输入事件,例如View.onTouchEvent(),也就是说此工作需要优化,或者分发到不同的线程。请注意,某些情况下这是可以接受的,例如发起新活动或类似活动的点击事件,并且此数字很大。
  • ANIMATION_START

    • 运行Choreographer注册动画的时间戳。
    • 通过查看这段时间和PERFORM_TRANVERSALS_START之间的时间,可以确定评估运行的所有动画器(ObjectAnimator,ViewPropertyAnimator和常用转换器)需要多长时间。
    • 如果此数字很高(> 2ms),请检查您的应用是否编写了自定义动画以确保它们适用于动画。
    • 要详细了解Choreographer,请查看For Butter or Worse 视频。
  • PERFORM_TRAVERSALS_START

    • PERFORM_TRAVERSALS_STAR-DRAW_START,则可以提取布局和度量阶段完成的时间。(注意,在滚动或动画期间,你会希望这应该接近于零..)
    • 要详细了解渲染管道的度量和布局阶段,请查看 Invalidations,Layouts和Performance视频
  • DRAW_START

    • performTraversals的绘制阶段开始的时间。这是录制任何无效视图的显示列表的起点。
    • 这和SYNC_START之间的时间是在树中所有无效视图上调用View.draw()所花费的时间。
    • 有关绘图模型的更多信息,请参阅硬件加速 失效,布局和性能视频
  • SYNC_QUEUED

    • 同步请求发送到RenderThread的时间。
    • 这标志着开始同步阶段的消息被发送到RenderThread的时刻。如果此时间和SYNC_START之间的时间很长(> 0.1ms左右),则意味着RenderThread忙于处理不同的帧。在内部,这被用来区分帧做了太多的工作,超过了16ms的预算,由于前一帧超过了16ms的预算,帧被停止了。
  • SYNC_START

    • 绘图的同步阶段开始的时间。
    • 如果此时间与ISSUE_DRAW_COMMANDS_START之间的时间很长(> 0.4ms左右),则通常表示有许多新的位图必须上传到GPU。
    • 要了解有关同步阶段的更多信息,请查看 Profile GPU Rendering视频
  • ISSUE_DRAW_COMMANDS_START

    • 硬件渲染器开始向GPU发出绘图命令的时间。
    • 这段时间和FRAME_COMPLETED之间的时间间隔显示了应用程序正在生产多少GPU。像这样出现太多透支或低效率渲染效果的问题。
  • SWAP_BUFFERS

    • eglSwapBuffers被调用的时间。
  • FRAME_COMPLETED

    • 帧的完整时间。花在这个帧上的总时间可以通过FRAME_COMPLETED - INTENDED_VSYNC来计算。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值