定义卡顿
卡顿是一种用户感知,最通用(无脑)的描述就是界面刷新低于60帧意味着卡顿
第一期目标:从用户肉眼感知到卡顿改善为可以通过数据去分析
起一个 displayLink 加入 main RunLoop 中,基于回调触发日志的收集和持久化。
并且在 window 中添加了一个肉眼不可见的(alpha 0.1)layer,每次修改保证了每次界面都有更新
回调中做了两件事情:
- 每次回调中通过私有API
CARenderServerGetFrameCounter
获取的真实的frameId
- 计算两次 displayLink 的时间戳之差得到一个
tick
的时长。
通过frameId
和tick时长
都可以得出FPS
的参考值
我们把它们分别叫做GPU FPS、CPU FPS
第一期日志记录
记录规则
日志按 displayLink 一次为一个单位。记录了每个 View 的布局、绘制,cellForRow 等行为
持久化
持久化在本地。提供直接在 app 内部查看 log 的能力
日志传输 在 pc 搭建了一个服务器,监控系统内部提供连接该服务器传输文件、流的能力。
因为日志量太大,没办法直接走后端接口上传,转而用自己 pc 搭建服务器的形式。