Overview
When integrating any SDK into an iOS application, understanding its performance impact is crucial for maintaining a good user experience. The Flashduty RUM SDK is designed with the goal of minimizing performance overhead and provides transparent measurement data to help you evaluate whether the SDK meets your application’s performance budget.The SDK uses asynchronous processing mechanisms, with all data processing performed in background queues without blocking the main thread.
Performance Benchmark
To evaluate the actual performance impact of the SDK on your application, we conducted performance benchmarks under typical usage scenarios. The following SDK features were enabled during testing:- Basic RUM monitoring: View, action, and resource tracking
- Distributed tracing
Test Results
The above data are reference values under typical scenarios; actual impact may vary depending on application complexity, device performance, and SDK configuration.
Performance Impact Details
CPU Usage
CPU Usage
The SDK’s CPU impact primarily comes from:
- Event collection and processing
- Data batching and compression
- Network request reporting
Memory Usage
Memory Usage
The SDK uses a fixed-size memory buffer to store pending event data, which does not grow indefinitely over time. Stale data is automatically cleaned up to ensure it does not consume excessive memory.
Launch Time
Launch Time
The SDK initialization process is optimized, with impact on application launch time controlled to sub-millisecond level.
Package Size
Package Size
The SDK uses a modular design, allowing you to include only the necessary functional modules:
Including only the necessary modules can minimize the impact on package size.
Network Usage
Network Usage
The SDK employs the following strategies to optimize network usage:
- Batch reporting: Events are cached locally first and sent in batches to reduce the number of network requests
- Data compression: Reported data is compressed to reduce transmission traffic
- Intelligent scheduling: Upload timing is intelligently scheduled based on network status and battery level
Performance Optimization Recommendations
If you have specific performance requirements, consider the following measures:1
Adjust the sample rate
Reduce the number of collected events by configuring the sample rate:
2
Enable only the features you need
Turn off the automatic tracking you do not analyze:
In Swift, long task tracking is disabled with
longTaskThreshold: nil. The Objective-C bridge cannot pass nil, so you have to write rumConfiguration.longTaskThreshold = 0. That does disable the feature, but RUM logs a cannot be less than 0s error on every start. This is expected and can be ignored.3
Tune the upload cadence
Adjust the upload interval, batch window and per-cycle batch limit to reduce contention between SDK uploads and your own requests, without losing any events. See the next section.
Reducing the Impact of Uploads on Your Own Requests
If your app makes latency-sensitive requests of its own (sign-in, checkout, key provisioning) over a narrow uplink, SDK uploads can compete with them for the uplink. The symptom is a higher tail (P95) on your own request latency that comes and goes. Three core settings change how uploads are distributed over time — fewer uploads, spread further apart:The iOS, Android, HarmonyOS and Flutter SDKs use the same names and values for these three settings, so tuning advice transfers between platforms unchanged. The one difference is that iOS
.low is 5 batches per cycle, while Android and HarmonyOS use 1 — same direction, smaller reduction.nil from the mapper). That is less invasive than changing your instrumentation — see Advanced configuration.
Offline Data Storage
When the device is offline, the SDK stores data locally with strict storage space limits:- Uses fixed-size disk cache
- Expired data is automatically cleaned up
- Cached data will not affect device storage space
Battery Consumption
The SDK is designed with battery consumption in mind:- Automatically reduces upload frequency when battery level falls below a certain threshold
- Leverages system background task mechanisms for data reporting
- Avoids frequent device wake-ups
Related Documentation
SDK Integration Guide
Learn how to integrate the SDK
Advanced Configuration
Learn about SDK advanced configuration options
Data Collection
Learn what data the SDK collects
Compatibility
Learn about supported platform versions