帧率分析
在开发者选项中,有一个Profile GPU Rending选项可以在当前界面上显示界面刷新帧率。但其实有一个ADB命令,就可以dump出实时的帧率信息。
首先,在开发者选型中打开Profile GPU Rending的“显示与adb shell dumpsys gfxinfo”选项。接下来,打开要调试的App。调试结束后,在终端中输入以下指令。
- adb shell dumpsys gfxinfo 包名
- 例如:
- ➜ ~ adb shell dumpsys gfxinfo com.tencent.mobileqq >
- /Users/xuyisheng/Downloads/fps.txt
打开重定向保存的文件,找到其中Profile data in ms中的数据,如下所示。
- Profile data in ms:
- com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity/android.view.ViewRootImpl@42e7ade8
- Draw Process Execute
- 1.36 2.20 0.49
- 2.08 2.21 0.49
- 1.49 2.24 0.48
- 1.71 2.86 0.61
- 1.84 2.63 0.62
- 2.72 2.72 0.61
- 2.09 3.12 0.69
- 0.85 3.15 0.63
- 1.89 2.99 0.68
- 2.44 4.88 1.02
- 1.40 4.93 1.03
- ……
将这三列数据导入Excel,再利用Excel的插入图表功能就可以生成一张比较直观的帧率图表,如图5.7所示。
你也可以生成其他类型的图,如条形图等。其中三列数据分别是以下三个。
- Draw:代表绘制的时间。
- Process:代表布局渲染、计算的时间。
- Execute:CPU等待GPU处理的时间。
这三个数据加起来要小余16ms,才代表是完整、流畅的一帧(在最新的Android系统上,系统增加了一些新的色条来展示更详细的数据)。
图5.7 帧率数据图表
