dumpsys gfxinfo报告中的“总帧数”和“Janky帧”

时间:2017-07-21 11:07:58

标签: android performance android-animation android-custom-view systrace

我正在使用dumpsys gfxinfo命令计算我的应用程序性能。在我的应用程序代码中改进了性能改进后,我观察到总帧数和Janky帧数大幅减少。

“总帧数”和“Janky Frames”数量的减少意味着什么?它是绩效的良好指标吗?

附加的效果报告。

绩效改进后

渲染的总帧数:1542

Janky帧:584(37.87%)

第90百分位数:81毫秒

第95百分位数:93毫秒

第99百分位数:129毫秒

Number Missed Vsync:268

数字高输入延迟:61

Number Slow UI thread:471

数字慢位图上传:15

Number Slow issue draw命令:511

Total ViewRootImpl:1

总观看次数:434

总显示列表:505.57 kB

在改进绩效之前

呈现的总帧数:5185

Janky的帧数:3229(62.28%)

第90百分位数:101毫秒

第95百分位数:109毫秒

第99百分位数:121毫秒

Number Missed Vsync:2487

数字高输入延迟:65

Number Slow UI thread:2088

数字慢位图上传:75

Number Slow issue draw命令:2967

Total ViewRootImpl:1

总观看次数:435

Total DisplayList:506.74 kB

3 个答案:

答案 0 :(得分:2)

“总帧数”:为渲染而创建的帧数。 “Janky Frames”:丢帧数。 “渲染的实际帧数”:总帧数 - Janky帧数。

即使总帧数增加而减少Janky
框架是性能的良好指标,这还不够。实际在一秒钟内在屏幕上呈现的帧数是决定性能运行状况的计算。一秒钟内渲染的帧数越多意味着性能越好。

答案 1 :(得分:1)

在使用“ dumpsys gfxinfo”之前,您将使用“ adb shell dumpsys gfxinfo reset”重置系统中的帧度量数据。然后在您改进的屏幕上进行一些操作。然后使用“ dumpsys gfxinfo”。

已渲染的帧总数:从“重置”到“ dumpsys gfxinfo”的渲染帧数。 垃圾帧:是耗时超过16毫秒的帧数,而不是丢失的帧数。

“垃圾帧速率”是一个非常好的数据,您可以在提高性能时进行比较。在您的情况下,您将过时的帧率从62.28%降低到37.87%,这非常好。

答案 2 :(得分:0)

adb shell dumpsys gfxinfo <PACKAGE_NAME>命令在整个过程的整个生命周期中提供有关框架渲染的汇总统计信息。

在解释输出时,应牢记两件事:

  • 在您提供的示例中,尚不清楚两次测试执行了多长时间,因此对于任何解释都没有用。 gfxinfo输出还提供时间信息uptimerealtimestats since。要计算重新计分的总时间stats since - realtimestats since - uptimerealtimeuptime最有可能是相同的值(两者之间的差是另一个topic
  • 仅当有任何要渲染的时候,渲染的帧总数才会增加。如果查询gfxinfo以获取静态用户界面,并且没有任何交互或动画帧呈现的非常低。因此,只有在执行相同的测试(完全相同的ui交互或动画)的情况下,这两个输出才是可比较的。

要回答您的问题:

  

“总帧数”和“垃圾帧”数减少意味着什么?

总帧数的减少可能是减少互动或减少gfxinfo记录的时间。 Janky帧的减少基本相同,并且可以渲染更多的帧而不会丢失。只有在两个示例中使用相同的测试时,这种解释才有意义。

  

这是性能的良好指标吗?

如果(并且仅)在用于比较两个不同实现(例如动画)的相同测试导致两个实现的优化版本降低的情况下,垃圾帧的减少才是性能的良好指标。