When optimizing your app's performance, it's crucial to understand the differences between traditional CPU usage and normalized CPU usage.
Traditional CPU Usage (Unnormalized)
This is calculated as CPU execution time divided by the total CPU time at the current CPU frequency. Both Android Studio and ADB usually report unnormalized CPU usage.
Normalized CPU Usage
Mobile devices frequently change CPU frequencies, making it challenging to compare CPU usage at different frequencies. For example, a 30% CPU usage at a low frequency and a 30% CPU usage at a high frequency have different performance implications. To address this issue, normalized CPU usage incorporates the frequency factor into the calculation.
Normalized CPU Usage = (CPU execution time / Total CPU time) * (Sum of all CPU frequencies at the current moment / Sum of all the CPU's maximum frequencies).
PerfDog provides both statistics methods, with unnormalized CPU usage as the default. However, it's recommended to use normalized CPU usage as a performance indicator on Android. Note that a few mobile devices may not support normalized CPU usage testing temporarily; try restarting them if needed.
On the iOS platform, PerfDog reports traditional (unnormalized) CPU usage by default. Frequency changes on iOS devices typically occur only in extreme cases, such as very low battery or locked screens. As a result, normalization is less relevant for iOS apps.
Understanding the differences between traditional and normalized CPU usage is essential for optimizing your app's performance on Android and iOS platforms.