Effectuer une analyse comparative de votre application

L'analyse comparative permet d'inspecter et de surveiller les performances de votre application. Vous pouvez régulièrement exécuter des analyses comparatives pour analyser et déboguer les problèmes de performances et empêcher l'introduction de régressions dans les modifications récentes.

Android propose deux bibliothèques d'analyse comparative aux approches différentes pour analyser et tester différents types de situations dans votre application : Macrobenchmark et Microbenchmark.

Macrobenchmark

La bibliothèque Macrobenchmark mesure des interactions plus larges d'utilisateurs finaux, telles que le démarrage, l'interaction avec l'interface utilisateur et les animations. La bibliothèque fournit un contrôle direct sur l'environnement de performances que vous testez. Elle vous permet de contrôler la compilation, ainsi que de démarrer et d'arrêter votre application pour mesurer directement le démarrage ou le défilement réel de l'application.

La bibliothèque Macrobenchmark injecte des événements et surveille les résultats en externe à partir d'une application de test créée avec vos tests. Par conséquent, lorsque vous écrivez les analyses comparatives, vous n'appelez pas directement le code de votre application, mais vous naviguez plutôt dans votre application en tant qu'utilisateur.

Microbenchmark

La bibliothèque Microbenchmark vous permet de comparer le code d'une application directement dans une boucle. Elle est conçue pour mesurer le travail du processeur qui évalue les performances des meilleurs cas (préparation juste à temps (JIT), accès au disque mis en cache) que vous pourriez rencontrer avec une boucle interne ou une fonction à chaud spécifique. La bibliothèque ne peut mesurer que le code que vous pouvez appeler en isolation.

Si votre application doit traiter une structure de données complexe ou disposer d'un algorithme spécifique gourmand en ressources de calcul, appelé plusieurs fois au cours de l'exécution de l'application, ces cas peuvent constituer de bons exemples d'analyses comparatives. Vous pouvez également mesurer certaines parties de votre UI. Par exemple, vous pouvez mesurer le coût de la liaison d'élément RecyclerView, le temps nécessaire pour gonfler une mise en page ou le degré d'exigence de la passe de mise en page et de mesure de votre classe View du point de vue des performances.

Toutefois, vous ne pouvez pas mesurer la contribution des cas analysés à l'expérience utilisateur globale. Dans certains cas, l'analyse comparative ne vous permet pas de déterminer si vous améliorez un goulot d'étranglement, comme les à-coups, ou le temps de démarrage de l'application. C'est pourquoi il est essentiel d'identifier d'abord ces goulots d'étranglement avec le Profileur Android. Une fois que vous avez trouvé le code que vous souhaitez examiner et optimiser, la boucle comparée peut s'exécuter de manière répétée, rapidement et facilement, afin de générer moins de bruit dans les résultats. Vous pouvez ainsi vous concentrer sur un domaine d'amélioration.

La bibliothèque Microbenchmark ne fournit des informations que sur votre application, et non sur le système dans son ensemble. Par conséquent, il est préférable d'analyser les performances des situations spécifiques à l'application, et non celles qui peuvent être liées à des problèmes système globaux.

Comparaison des bibliothèques d'analyse comparative

Macrobenchmark Microbenchmark
Version de l'API 23 et versions ultérieures 14 et versions ultérieures
Fonction Mesure les points d'entrée ou les interactions de haut niveau, tels que le lancement d'une activité ou le défilement d'une liste. Mesure des fonctions individuelles
Champ d'application Test de l'application complète hors processus Test du travail CPU en cours de processus
Vitesse Vitesse d'itération moyenne (peut dépasser une minute) Vitesse d'itération rapide (souvent moins de 10 secondes)
Traçage Les résultats incluent des traces de profilage Échantillonnage et traçage de méthode facultatifs