iOS 应用,性能监控
github 源码地址
iOS 应用,性能监控
背景,目前正在优化项目,首先要对项目内的性能指标进行分析,这个可以通过Instrument 进行debug 分析。这样做只适用于开发人员。性能指标作为一项衡量App的重要指标无法量化。为了每次发布前能有一个性能报告,需要开发一个组件,对性能数据进行记录,之后通过脚本生成报表。
##报表中重点关注的指标有以下几点:
- 启动时间
- 内存
- FPS(页面刷新帧率)
- CPU
- 页面渲染时间
debug模式
- 主线程阻塞时,输出MainThread 栈信息。
##分别介绍如何实现这些数据的采集。
内存
1 | vm_size_t usedMemory(void) { |
FPS
- 使用CADisplayLink 进行获取
1 | _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(envokeDisplayLink:)]; |
CPU
1 | float cpu_usage() |
启动时间
1 | + (void)load |
页面渲染耗时
利用runtime, 将UIViewController 的viewWillAppear, viewDidAppear 进行hook。输出调用的时间间隔。
1 | @interface UIViewController() |
debug 主线程阻塞
- 通过监控Runloop的回调进行监控
1 | _observer = CFRunLoopObserverCreateWithHandler(kCFAllocatorDefault, kCFRunLoopAllActivities, true, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) { |