7

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

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

附加绩效报告。

性能改进后

################################
Total frames rendered: 1542

Janky frames: 584 (37.87%)

90th percentile: 81ms

95th percentile: 93ms

99th percentile: 129ms

Number Missed Vsync: 268

Number High input latency: 61

Number Slow UI thread: 471

Number Slow bitmap uploads: 15

Number Slow issue draw commands: 511

Total ViewRootImpl: 1

Total Views:        434

Total DisplayList:  505.57 kB
####################################

性能改进之前

###############################
Total frames rendered: 5185

Janky frames: 3229 (62.28%)

90th percentile: 101ms

95th percentile: 109ms

99th percentile: 121ms

Number Missed Vsync: 2487

Number High input latency: 65

Number Slow UI thread: 2088

Number Slow bitmap uploads: 75

Number Slow issue draw commands: 2967

Total ViewRootImpl: 1

Total Views:        435

Total DisplayList:  506.74 kB
######################################
4

3 回答 3

4

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

尽管总帧数的增加和 Janky
Frames 的减少是性能的良好指标,但这还不够。一秒钟内在屏幕上渲染的实际帧数是决定性能健康的计算。一秒钟内渲染的帧数越多,意味着性能越好。

于 2017-11-10T04:29:15.450 回答
2

在使用“dumpsys gfxinfo”之前,您将使用“adb shell dumpsys gfxinfo reset”来重置系统中的 framemetrics 数据。然后在你改进的屏幕上做一些操作。然后使用 "dumpsys gfxinfo" 。

渲染的总帧数:从“reset”到“dumpsys gfxinfo”渲染的帧数。Janky frames:是耗时超过 16 毫秒的帧数,而不是丢帧数。

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

于 2019-01-28T08:49:08.800 回答
1

该命令提供有关整个进程生命周期内adb shell dumpsys gfxinfo <PACKAGE_NAME>帧渲染的汇总统计信息。

在解释输出时应牢记两点:

  • 在您提供的示例中,不清楚这两个测试执行了多长时间,因此对任何解释都没有用。gfxinfo输出还提供时间信息,uptime和。要计算记录或需要计算的总时间。并且很可能是相同的值(两者之间的差异是另一个主题realtimestats sincestats since - realtimestats since - uptimerealtimeuptime
  • 仅当有要渲染的内容时,渲染的总帧数才会增加。如果为静态用户界面查询 gfxinfo 并且没有呈现交互或动画帧,则非常低。因此,只有执行相同的测试(完全相同的 ui 交互或动画),这两个输出才具有可比性。

要回答您的问题:

“总帧数”和“Janky Frames”数的减少意味着什么?

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

它是性能的良好指标吗?

当(且仅当)用于比较两个不同实现(例如动画)的相同测试导致两个实现的优化版本减少时,janky 帧的减少是一个很好的性能指标。

于 2019-11-06T12:19:03.717 回答