采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
问题:
问题1描述: 课程中说监听fps可以带到线上,但是监听vsync是要付出性能代价的。普通的布局,当rquestLayout()才会监听vsync。我们却每帧都监听,所有带到线上会不会有点不合理?
rquestLayout()
问题2描述: 比如带到线上,特殊的场景才打开,通过长链接拿到用户一段时间的帧率,这种方案可能才感觉比较合理。但什么场景才打开这个开关来监听屏幕信号呢?
同学你好,这个带到线上也一定是采样,不然数据太多本来也消费不过来。而且监听的时候可以判断其是出现绘制才真正执行。
真正带到线上我们是直接采样的,而不一定是用户发生了什么才开,这样每天算一个帧率作为指标,看新版本的波动情况来确认新版本是否有问题或者是优化。
没太懂老师您的意思,如果可以老师您能在说说吗? 关于监听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. 判断绘制才执行?
同学你好。 1. 采样是采样率的意思,是控制功能的开启比例。这种监控都不会是全量用户都开启或者一直只采某一部分用户的。 2. 你可以参考下 Matrix 的实现
炒鸡感谢,找到研究的方向了~
登录后可查看更多问答,登录/注册
由表及里学到国内Top团队对性能问题的体系化解决方案
1.4k 38
1.2k 12
1.4k 9
1.2k 9
1.0k 9