Je compare la consommation de ressources de deux applications Android.
-
L'application A utilise l'accéléromètre
-
L'application B utilise à la fois l'accéléromètre et le gyroscope.
Après avoir lu ces capteurs, ces applications effectuent un traitement sur les valeurs des capteurs. Maintenant j'ai mesuré leur utilisation du CPU en utilisant dumpsys cpuinfo ainsi que la commande top. En général, l'application B utilise 3-4 fois plus de CPU que l'application A. Les chiffres réels sont les suivants : Ces résultats pour un seul CPU et mon téléphone utilise un CPU Dual-core 1.2 GHz Cortex-A9 (Samsung Galaxy S2).
App A (Average CPU Usage: 5%)
APP B (Average CPU Usage = 20%)
J'ai ensuite mesuré le pourcentage d'utilisation de la batterie pour ces deux applications. J'ai laissé le téléphone Android en mode avion et une seule de ces deux applications était en cours d'exécution à un moment donné. Après les avoir fait tourner pendant une heure, j'ai obtenu les résultats suivants :
Remaining battery level after one hour of use:
Idle mode: 99%
Running App A: 96%
Running App B: 93%
Je m'attendais au même rapport avec ces niveaux de batterie que celui que j'ai observé avec l'utilisation du CPU. J'ai également testé ces applications sur une smartwatch (CPU : Quad-core 1.2 GHz Cortex-A7) et j'ai observé une différence encore plus faible entre l'utilisation de la batterie. Les résultats observés pour une utilisation d'une heure sont les suivants :
Remaining battery level after one hour of use:
Idle mode: 99%
Running App A: 87%
Running App B: 85%
Donc ma question : Pourquoi le ratio de l'utilisation du CPU pour ces applications n'est pas reflété dans leurs niveaux de batterie restants ? Ou bien l'utilisation du CPU ne devrait-elle pas être linéairement liée à l'utilisation de la batterie ? La raison pourrait-elle être que plusieurs cœurs sont actifs en même temps, c'est pourquoi j'observe une petite différence entre leurs niveaux de batterie ? PS : J'utilise le verrouillage partiel dans ces applications.