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

zailushang · May 22, 2020 · Last by zailushang replied at June 02, 2020 · Last modified by admin 恒温 · 1313 hits

背景

最近发现部分竞品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 条回复 时间 点赞

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

直接研究源码就知道了

王小夫 回复

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

mark 一下吧 期待大佬的后续

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up