iOS性能优化:MetricKit

MetricKit是苹果提供的App内应用性能检测框架,覆盖了CPU、GPU、磁盘以及运行数据等。

MetricKit适用于iOS 13.0+的设备。它会在一天结束后,将过去24小时搜集的性能指标和问题诊断报告归集在一起,然后在下一次启动 App 后,在 delegate 的回调中提供给我们。
实际使用时除了获取到过去24小时的数据,24小时之前未被收集过的数据也会一并返回。

MXMetricPayload

属性
类型 含义 补充说明
latestApplicationVersion NSString 收集此数据时的最高版本信息 考虑到APP会有不同的版本,MXMetricPayload会携带一个latestApplicationVersion的字符串,此字段会和数据统计时项目配置中的Version版本保持一致。 语义上latest并不是表示APP的最新版本,而是说,在此24小时数据采集的区间内,如果你从1.0版本升级到了1.1版本,也就是当前payload的数据是两个版本的混合数据,latestApplicationVersion应该是显示的1.1而不是1.0
includesMultipleApplicationVersions BOOL 当前24小时数据包是否包含多个版本
timeStampBegin NSDate 数据采集的开始时间
timeStampEnd NSDate 数据采集的结束时间
cpuMetrics MXCPUMetric CPU指标 累计CPU运行耗时 累计CPU指令数
gpuMetrics MXGPUMetric GPU指标 累计GPU运行耗时
cellularConditionMetrics MXCellularConditionMetric 蜂窝网络指标 信号格数直方图
applicationTimeMetrics MXAppRunTimeMetric 运行时间指标 累计前台运行时长 累计后台运行时长 累计后台播放音乐时长 累计后台使用定位时长
locationActivityMetrics MXLocationActivityMetric 定位指标 累计最佳精度定位时长 累计最佳精度导航时长 累计10米精度定位时长 累计100米精度定位时长 累计1000米精度定位时长 累计3000米精度定位时长
networkTransferMetrics MXNetworkTransferMetric 网络指标 累计wifi上传数据量 累计wifi下载数据量 累计流量上传数据量 累计流量下载数据量
applicationLaunchMetrics MXAppLaunchMetric APP启动指标 冷启直方图 热起直方图
applicationResponsivenessMetrics MXAppResponsivenessMetric APP挂起指标 不响应用户交互时间直方图
diskIOMetrics MXDiskIOMetric 磁盘IO指标 累计写入磁盘或其他长期存储的数据量
memoryMetrics MXMemoryMetric 内存指标 最高内存使用量 suspended状态下平均内存使用量
displayMetrics MXDisplayMetric 显示指标 平均像素亮度
animationMetrics MXAnimationMetric UIScrollView掉帧指标 iOS 14 新增 scrollView滑动掉帧时间比例
applicationExitMetrics MXAppExitMetric App退出指标 iOS 14 新增 累计前台正常退出次数 累计前台内存资源受限退出次数 (应该就是OOM,未验证) 累计前台BadAccess退出次数 累计前台不正常退出次数(包含未捕获异常、调用Abort函数、发出abort信号) 累计前台非法指令退出次数 累计前台WatchDog杀死退出次数 累计后台正常退出次数 累计后台内存资源受限退出次数 (应该就是OOM,未验证) 累计后台CPU使用受限退出次数 累计后台为了其他应用腾内存而杀死本应用退出次数 累计后台BadAccess退出次数 累计后台不正常退出次数(包含未捕获异常、调用Abort函数、发出abort信号) 累计后台非法指令退出次数 累计后台WatchDog杀死退出次数 累计后台suspend状态下访问锁定资源文件杀死退出次数 累计后台任务超时杀死退出次数
signpostMetrics NSArray 自选代码段运行指标 自选段名 自选段分类 运行总次数 运行耗时直方图 累计CPU时长 平均内存 累计磁盘写入
metaData MXMetaData 基本信息 区域 操作系统版本 设备类型 App版本 指令集

MXDiagnosticPayload (iOS 14 新增)

属性 类型 含义 补充说明
cpuExceptionDiagnostics NSArray CPU异常诊断 调用栈 异常时CPU使用时长 采样次数
diskWriteExceptionDiagnostics NSArray 磁盘写入异常诊断 调用栈 异常时总磁盘写入量
hangDiagnostics NSArray 挂起诊断 调用栈 挂起时长
crashDiagnostics NSArray 崩溃诊断 调用栈 崩溃原因 虚拟内存区域信息 exceptionType exceptionCode signal
timeStampBegin NSDate 诊断开始时间

收集到终端的Metric后可以针对性分析各项指标。

(未完待续)

Comments