Skip to main content

概述

在将任何 SDK 集成到 iOS 应用时,了解其性能影响对于维护良好的用户体验至关重要。Flashduty RUM SDK 在设计时以最小化性能开销为目标,并提供透明的测量数据,帮助您评估 SDK 是否符合应用的性能预算。
SDK 采用异步处理机制,所有数据处理都在后台队列中进行,不会阻塞主线程。

性能基准测试

为了评估 SDK 对应用性能的实际影响,我们在典型使用场景下进行了性能基准测试。测试中启用了以下 SDK 功能:
  • 基础 RUM 监控:视图、操作、资源追踪
  • 链路追踪
SDK 使用默认配置进行初始化,并模拟常见用户操作(如页面浏览、滚动列表、网络请求等)。

测试结果

以上数据为典型场景下的参考值,实际影响会因应用复杂度、设备性能和 SDK 配置不同而有所差异。

性能影响详解

SDK 对 CPU 的影响主要来自:
  • 事件收集和处理
  • 数据批处理和压缩
  • 网络请求上报
SDK 采用异步处理机制,所有数据处理都在后台队列中进行,不会阻塞主线程,确保不影响应用的 UI 响应性能。
SDK 使用固定大小的内存缓冲区存储待上报的事件数据,不会随时间无限增长。过旧的数据会被自动清理,确保不会占用过多内存。
SDK 初始化过程经过优化,对应用启动时间的影响控制在亚毫秒级。
建议在 AppDelegatedidFinishLaunchingWithOptions 中尽早初始化 SDK,以便捕获完整的应用启动过程。
SDK 采用模块化设计,您可以根据需要只引入必要的功能模块:只引入必要的模块可以最小化对包大小的影响。
SDK 采用以下策略优化网络使用:
  • 批量上报:事件先缓存到本地,批量发送以减少网络请求次数
  • 数据压缩:上报数据经过压缩处理,减少传输流量
  • 智能调度:根据网络状态和电量情况智能调度上报时机

性能优化建议

如果您对性能有特殊要求,可以考虑以下优化措施:
1

调整采样率

通过配置采样率减少收集的事件数量:
2

按需启用功能

只启用必要的追踪功能:
这一步是拿数据维度换负载,请按实际分析需求取舍。关闭操作追踪后,自动 action 事件清零,依赖 action 的挫折信号(rage/dead/error tap)一并消失;view、resource、error 事件不受影响,手动打点也不受影响。telemetrySampleRate: 0 关闭的是 SDK 自身的运行遥测,不影响任何 RUM 业务数据,可以放心设置。
关闭长任务追踪在 Swift 中用 longTaskThreshold: nil。Objective-C 侧该属性经桥接无法传 nil,只能写 rumConfiguration.longTaskThreshold = 0——功能上确实关闭了,但每次 RUM 启动会打印一条 cannot be less than 0s 的错误日志,属已知现象,可以忽略。
3

配置上传节奏

调整上传周期、批次时长和单周期批次上限,降低 SDK 上传与业务请求争抢网络的概率,且不损失任何事件。详见下一节。

降低上传对业务请求的影响

如果应用自身有延迟敏感的网络请求(如登录、下单、密钥申请),并且运行在上行带宽较窄的网络上,SDK 的上传可能与业务请求争抢上行链路,表现为业务请求耗时的长尾(P95)升高,且时好时坏。 这种情况下调整以下三个核心参数,改变的是上传的时间分布——上传次数更少、单次更分散:
这三个参数只改变上传时机,不减少任何事件,也不影响看板上的任何数据维度——如果不希望牺牲数据,只调它们即可。iOS SDK 的上传请求默认强制使用 deflate 压缩,无需额外配置。
这三个参数在 iOS、Android、HarmonyOS、Flutter SDK 中同名同值,调优结论可以跨平台直接套用。唯一差异是 iOS 的 .low 为 5 批次/周期,Android 与 HarmonyOS 为 1,方向一致、降幅略小。
如果事件量本身偏大,还可以用 EventMapper 丢弃指定的噪音事件(映射函数返回 nil 即丢弃),侵入性小于改业务打点代码,用法见 高级配置

离线数据存储

SDK 在设备离线时会将数据存储到本地,存储空间使用受到严格限制:
  • 使用固定大小的磁盘缓存
  • 过期数据自动清理
  • 不会因缓存数据过多影响设备存储空间

电池消耗

SDK 在设计时充分考虑了电池消耗:
  • 在电量低于特定阈值时自动降低上报频率
  • 利用系统的后台任务机制进行数据上报
  • 避免频繁唤醒设备

相关文档

SDK 接入指南

了解如何接入 SDK

高级配置

了解如何配置 SDK 的高级功能

数据收集

了解 SDK 收集的数据类型

兼容性

了解 SDK 支持的平台版本