Skip to main content

概述

在将任何 SDK 集成到 HarmonyOS 应用时,了解其性能影响对于维护良好的用户体验至关重要。Flashduty RUM SDK 在设计时充分考虑了性能因素:纯 ArkTS 实现、按功能拆分为独立模块,并对各项资源占用设置了明确上限。
SDK 的事件落盘与上传均为异步操作并批量执行,不会同步阻塞 UI 线程。

性能基准

HarmonyOS SDK 采用模块化设计,五个模块均为纯 ArkTS 实现,不包含 native 库,因此没有多 ABI 带来的体积放大问题。各模块的 HAR 包大小实测如下: 按接入口径汇总:
以上数据基于 HarmonyOS SDK 0.5.1 在 OHPM 上架的 HAR 产物测得。HAR 为压缩归档格式,实际应用安装包的增量还会受编译方式和混淆配置影响。运行时开销(CPU、内存、启动时间)与设备性能、事件量和 SDK 配置强相关,下文按机制说明各项开销的来源与上限。

性能影响详解

SDK 对 CPU 的影响主要来自:
  • 事件组装和落盘
  • 数据批处理和压缩
  • 网络请求上报
以上均为异步操作并批量执行,不会同步阻塞 UI 线程。此外,几类在其他平台上常见的后台开销在 HarmonyOS SDK 中天然为零:
  • 不做 vitals 轮询采集(无定时采样任务)
  • 不做长任务(long task)检测
  • 无 SDK 内部遥测上报
  • Native 崩溃和卡死通过系统 hiAppEvent 在下次启动时回放采集,运行时没有额外监控开销
SDK 使用有上限的内存缓冲区暂存待落盘的事件数据,缓冲区写满后自动淘汰最旧的数据,不会随时间无限增长。
SDK 初始化过程经过优化,启动时间影响控制在毫秒级。
建议在 AbilityStage.onCreate 中尽早初始化 SDK,以便捕获完整的应用启动过程。
SDK 采用模块化设计,您可以根据需要只引入必要的功能模块——不需要崩溃采集就不安装 @flashcatcloud/crash,不使用 @ohos/axios 就不安装 @flashcatcloud/axios。各模块体积见上文实测表。
SDK 采用以下策略优化网络使用:
  • 批量上报:事件先落盘缓存,按批次发送,减少网络请求次数
  • 数据压缩:上报正文达到 512 字符即自动启用 zlib(deflate)压缩,压缩率通常可达 5–10 倍
  • 上传节奏可控:上传周期、批次时长和单周期批次上限均可配置,见性能优化建议

性能优化建议

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

调整采样率

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

按需接入功能

只安装并启用必要的功能模块。与其他平台不同,HarmonyOS SDK 的默认配置本身就偏保守:
  • 交互追踪(setTrackUserInteractions)默认关闭,不开启则没有自动 action 采集的开销
  • vitals 采集、长任务检测、SDK 内部遥测不存在于 HarmonyOS SDK 中,无需手动关闭
3

配置上传节奏

如果应用自身有延迟敏感的网络请求,可以调整上传周期(setUploadFrequency)、批次时长(setBatchSize)和单周期批次上限(setBatchProcessingLevel),降低 SDK 上传与业务请求争抢网络的概率,且不损失任何事件。这三个参数与 Android SDK 同名同值,配置方法见高级配置:降低上传对业务请求的影响

离线数据存储

SDK 在设备离线时会将数据存储到本地,网络恢复后再上传。存储空间使用受到严格限制:
  • 每个功能模块的磁盘缓存上限为 4 MB,超出后最旧的数据先被清除
  • 单个批次文件上限 512 KB
  • 数据最长保留 23 小时,过期自动清理
  • 不会因缓存数据过多影响设备存储空间

相关文档

SDK 接入指南

了解如何接入 SDK

高级配置

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

数据收集

了解 SDK 收集的数据类型