KKMonitor

SDK 性能影响

KMonitor SDK 对应用启动和每个事件开销的影响的基准,以及与 Firebase 初始化的比较。

请查看下面各平台的说明,了解 KMonitor SDK 对应用性能的影响。

Android

基准测试

我们使用运行 Android 13(API 33)的 Pixel 4a 对 SDK 的性能影响进行了基准测试。每个测试运行 35 次,并使用 Macrobenchmark。详细方法请参见 android/measure-android/benchmarks

基准测试结果会受设备和应用影响。建议你在自己的应用上运行基准测试, 得到更贴近真实场景的结果。这里公布的数据仅作为参考,也用于我们内部检测性能回归。

v0.16.0 的基准测试结果:

  • 对于简单应用,应用启动时间(time to initial display)增加 17.5ms-31.3ms(中位数 24.3ms)。
  • 检测点击手势并创建布局快照会增加 0.6-1ms。

分析

为了衡量 SDK 对应用的影响,我们在代码关键路径中添加了 Trace。这些 Trace 可以帮助你使用 Macrobenchmark,或直接使用 Perfetto 分析性能。

相关 Trace 如下:

指标描述
msr-init主线程初始化耗时
msr-start调用 Measure.start 时在主线程上的耗时
msr-stop调用 Measure.stop 时在主线程上的耗时
msr-trackEvent将事件写入本地存储的耗时,几乎全部发生在主线程
msr-trackGesture主线程跟踪手势的耗时
msr-generateSvgAttachment后台线程生成 SVG 布局的耗时
msr-captureScreenshot主线程采集并压缩截图的耗时
msr-loadImageFromFile主线程从文件加载图片的耗时
msr-loadImageFromUri主线程从 Uri 加载图片的耗时

与 Firebase 初始化的比较

下面是使用 Macrobenchmark 对比 KMonitor SDK 与 Firebase 初始化耗时的结果。测试在 Pixel 4a 上运行, 使用 Firebase BOM 33.7.0 和 KMonitor Android SDK 0.10.0

Firebase 会分多个阶段初始化。在集成 Firebase Crashlytics、Performance 和 Analytics 的基准应用中, 观测到的初始化总耗时中位数为 77.6ms。同一 Macrobenchmark 中,KMonitor 的耗时为 35.0ms

Firebase Comparison

其中一次运行的 Perfetto 屏幕截图:

Screenshot

iOS

基准测试

我们使用运行 iOS 18.5 的 iPhone 14 Plus 上的基准应用,对 iOS SDK 的性能影响进行了测试。 每个场景执行 5 次,并使用 os_signpost 精确记录耗时。指标通过 Instruments (Time Profiler 和 Logging Signposts)采集。

性能影响会随设备和应用复杂度变化。 我们建议你在自己的应用上测量实际影响。 以下数字用作参考基线,并在内部用于监控回归。

基准测试结果 (v0.6.0)

KMonitor 会为应用启动时间(time to initial display)增加 21.03-25.7ms(平均约 22.8ms)。 SDK 执行的其他关键操作如下:

操作p95描述
trackEvent195 微秒包括事件采集、属性补充和入队
appendAttributes360 微秒动态属性采集(例如网络、设备状态)
trackBugReport120 微秒完整流程,包括截图、布局和元数据
trackEventUserTriggered32 微秒记录用户触发事件
trackSpanTriggered96 微秒发出 Trace 事件时的耗时
spanProcessorOnStart105 微秒创建 Span
spanProcessorOnEnded355 微秒Span 序列化和缓冲
generateScreenshot80 毫秒UI 快照和压缩
generateLayoutSnapshot7.5 毫秒采集布局层级