最近在做性能监控,思路大致是 hook 一些 cpu 耗时比较严重(layoutSubviews,cellForRow 等)的方法,获取方法调用的时间写入日志。后期对日志进行分析,得到优化的方向。
此文简单介绍一下整套系统的设计思路和简述实现细节。
设计原则
1.不能影响原有业务代码逻辑
我们只是一个观察者,不应该影响其他业务方正常的功能。
2.监控对性能影响尽可能小
显而易见,因为观察者效应,监控必然是会对原有性能有影响。这一点需要非常注意
3.最好不需要业务方书写代码
如果需要业务方自己书写代码,这一点非常麻烦。最好能做到无痕接入,尽可能通用、可配置。
*4.面对不同用户提供不同程度的能力
使用这套性能监控的人可能很多。