我正在使用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
#答案 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
输出还提供时间信息uptime
,realtime
和stats since
。要计算重新计分的总时间stats since - realtime
或stats since - uptime
。 realtime
和uptime
最有可能是相同的值(两者之间的差是另一个topic)要回答您的问题:
“总帧数”和“垃圾帧”数减少意味着什么?
总帧数的减少可能是减少互动或减少gfxinfo记录的时间。 Janky帧的减少基本相同,并且可以渲染更多的帧而不会丢失。只有在两个示例中使用相同的测试时,这种解释才有意义。
这是性能的良好指标吗?
如果(并且仅)在用于比较两个不同实现(例如动画)的相同测试导致两个实现的优化版本降低的情况下,垃圾帧的减少才是性能的良好指标。