问答 Android 流畅度之 gfxinfo 与 SurfaceFlinger 数据差太多

zailushang · 2020年05月22日 · 最后由 zailushang 回复于 2020年06月02日 · 50 次阅读

背景

最近发现部分竞品 gfxinfo 拿不到数据,所以采用 SurfaceFlinger 统计流畅度。

测试场景

在 30 秒的时间内,运行被测试场景,然后同时统计 gfxinfo 和 SurfaceFlinger 的数据,并计算 FPS 和 UI_score。
说明:

  • FPS:每秒采集一次数据,所以每秒采集到的帧数,就是 FPS。(没有做补偿算法,有一些>60 的 FPS,暂时忽略这个问题)
  • UI_score:int( 每秒 Jank 数 / 每秒帧数) * 100,可以理解为 UI_score 越高越流畅,越低越卡顿。

多次测试,每次两种方式统计的数据差距都很大

(1)FPS 差距不大,说明统计的帧数差不多

(2)UI_score 差距巨大,SurfaceFlinger 搜集数据计算帧耗时非常不准确

(3)场景视频,视觉角度 gfxinfo 统计的准确,而 SurfaceFlinger 数据严重失真

Youku

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
最佳回复

更正一个问题,gfxinfo 可以拿到所有产品的流畅度数据。
之前拿不到竞品数据,是因为只监控了主进程的数据,后来发现竞品用另一个进程做的 UI 绘制,所以现在的流畅度方案改成了搜集产品所有进程的流畅度数据,解决了这个问题。

共收到 5 条回复 时间 点赞

有发现这个问题的小伙伴吗?求解答

直接研究源码就知道了

Suneo 回复

大佬之前也发现这个问题了吗?

mark 一下吧 期待大佬的后续

更正一个问题,gfxinfo 可以拿到所有产品的流畅度数据。
之前拿不到竞品数据,是因为只监控了主进程的数据,后来发现竞品用另一个进程做的 UI 绘制,所以现在的流畅度方案改成了搜集产品所有进程的流畅度数据,解决了这个问题。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册