帧率分析

在开发者选项中,有一个Profile GPU Rending选项可以在当前界面上显示界面刷新帧率。但其实有一个ADB命令,就可以dump出实时的帧率信息。

首先,在开发者选型中打开Profile GPU Rending的“显示与adb shell dumpsys gfxinfo”选项。接下来,打开要调试的App。调试结束后,在终端中输入以下指令。

  1. adb shell dumpsys gfxinfo 包名
  2. 例如:
  3. ~ adb shell dumpsys gfxinfo com.tencent.mobileqq >
  4.  
  5. /Users/xuyisheng/Downloads/fps.txt

打开重定向保存的文件,找到其中Profile data in ms中的数据,如下所示。

  1. Profile data in ms:
  2.  
  3. com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity/android.view.ViewRootImpl@42e7ade8
  4. Draw Process Execute
  5. 1.36 2.20 0.49
  6. 2.08 2.21 0.49
  7. 1.49 2.24 0.48
  8. 1.71 2.86 0.61
  9. 1.84 2.63 0.62
  10. 2.72 2.72 0.61
  11. 2.09 3.12 0.69
  12. 0.85 3.15 0.63
  13. 1.89 2.99 0.68
  14. 2.44 4.88 1.02
  15. 1.40 4.93 1.03
  16. ……

将这三列数据导入Excel,再利用Excel的插入图表功能就可以生成一张比较直观的帧率图表,如图5.7所示。

你也可以生成其他类型的图,如条形图等。其中三列数据分别是以下三个。

  • Draw:代表绘制的时间。
  • Process:代表布局渲染、计算的时间。
  • Execute:CPU等待GPU处理的时间。

这三个数据加起来要小余16ms,才代表是完整、流畅的一帧(在最新的Android系统上,系统增加了一些新的色条来展示更详细的数据)。

帧率分析 - 图1 图5.7 帧率数据图表