0%

iOS 性能监控(第一期

定义卡顿

卡顿是一种用户感知,最通用(无脑)的描述就是界面刷新低于60帧意味着卡顿

第一期目标:从用户肉眼感知到卡顿改善为可以通过数据去分析

起一个 displayLink 加入 main RunLoop 中,基于回调触发日志的收集和持久化。
并且在 window 中添加了一个肉眼不可见的(alpha 0.1)layer,每次修改保证了每次界面都有更新

回调中做了两件事情:

  1. 每次回调中通过私有APICARenderServerGetFrameCounter获取的真实的frameId
  2. 计算两次 displayLink 的时间戳之差得到一个tick的时长。

通过frameIdtick时长都可以得出FPS的参考值
我们把它们分别叫做GPU FPSCPU FPS

第一期日志记录

记录规则
日志按 displayLink 一次为一个单位。记录了每个 View 的布局、绘制,cellForRow 等行为

持久化
持久化在本地。提供直接在 app 内部查看 log 的能力

日志传输 在 pc 搭建了一个服务器,监控系统内部提供连接该服务器传输文件、流的能力。
因为日志量太大,没办法直接走后端接口上传,转而用自己 pc 搭建服务器的形式。