请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于Choreographer监听FPS的问题

问题:

  1. 监听vsycn带来性能损耗,带到线上是不是欠妥
  2. 如果通过服务开关来打开vsync,那么具体什么场景需要监听fps。比如客户反应哪里卡了,我我们通过Web配置平台,打开开关,手机fps收据,来进行分析。过一会儿再关上?

问题1描述:
课程中说监听fps可以带到线上,但是监听vsync是要付出性能代价的。普通的布局,当rquestLayout()才会监听vsync。我们却每帧都监听,所有带到线上会不会有点不合理?


问题2描述:
比如带到线上,特殊的场景才打开,通过长链接拿到用户一段时间的帧率,这种方案可能才感觉比较合理。但什么场景才打开这个开关来监听屏幕信号呢?

正在回答 回答被采纳积分+3

1回答

随风绽放 2023-02-20 20:10:02

同学你好,这个带到线上也一定是采样,不然数据太多本来也消费不过来。而且监听的时候可以判断其是出现绘制才真正执行。


真正带到线上我们是直接采样的,而不一定是用户发生了什么才开,这样每天算一个帧率作为指标,看新版本的波动情况来确认新版本是否有问题或者是优化。

1 回复 有任何疑惑可以回复我~
  • 提问者 布鲁马3518274 #1
    没太懂老师您的意思,如果可以老师您能在说说吗?
    
    关于监听vsync通过的是 DisplayEventReceiver.nativeScheduleVsync()触发,该逻辑是一个Native的Binder对象EventConection.requestNextVsync()向SurfaceFligner进程发起一个Binder IPC调用来实现的,vsync回来时通过SocketPair跨进程传回来的
    
    如果我们在应用中线上环境写 以下该逻辑就表示每隔16ms就会有一次Binder IPC通信和一次SockPair通信,我说的性能问题是两次IPC通信太频繁的意思。
    Choreographer.getInstance().postFrameCallback {
                //..
                Choreographer.getInstance().postFrameCallback..
     }
    
    1. 采样是什么意思?
    2. 判断绘制才执行?
    回复 有任何疑惑可以回复我~ 2023-02-21 22:13:25
  • 随风绽放 回复 提问者 布鲁马3518274 #2
    同学你好。
    
    1. 采样是采样率的意思,是控制功能的开启比例。这种监控都不会是全量用户都开启或者一直只采某一部分用户的。
    2. 你可以参考下 Matrix 的实现
    回复 有任何疑惑可以回复我~ 2023-02-22 11:38:13
  • 提问者 布鲁马3518274 回复 随风绽放 #3
    炒鸡感谢,找到研究的方向了~
    回复 有任何疑惑可以回复我~ 2023-02-22 17:01:10
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信