Résolution pratique de problèmes de performances dans Jetpack Compose

1. Avant de commencer

Dans cet atelier de programmation, vous allez apprendre à améliorer les performances d'exécution d'une application Compose. Vous suivrez une approche scientifique pour évaluer, déboguer et optimiser les performances. Vous vous intéresserez à plusieurs problèmes de performances détectés grâce au traçage système et modifierez le code d'exécution non performant dans une application exemple, qui contient plusieurs écrans représentant différentes tâches.

Pour obtenir de l'aide tout au long de cet atelier de programmation, reportez-vous au code suivant :

Les écrans sont construits de manière différente et se présentent de la manière suivante :

  • Le premier écran est une liste à deux colonnes avec des éléments d'image et des balises en haut des éléments. Ici, vous optimisez des composables lourds.

8afabbbbbfc1d506.gif

  • Les deuxième et troisième écrans contiennent un état qui se recompose fréquemment. Ici, vous supprimez les recompositions inutiles afin d'optimiser les performances.

f0ccf14d1c240032.gif 51dc23231ebd5f1a.gif

  • Le dernier écran contient des éléments instables. Ici, vous stabilisez les éléments à l'aide de différentes techniques.

127f2e4a2fc1a381.gif

Conditions préalables

  • Vous devez savoir créer des applications Compose.
  • Vous disposez des connaissances de base en matière de tests ou d'exécution de macrobenchmarks.

Objectifs de l'atelier

  • Savoir identifier les problèmes de performances grâce aux traces système et au traçage de composition.
  • Développer des applications Compose performantes qui s'affichent sans problème.

Ce dont vous avez besoin

2. Configuration

Pour commencer, procédez comme suit :

  1. Clonez le dépôt GitHub :
$ git clone https://github.com/android/codelab-android-compose.git

Vous pouvez également télécharger le dépôt sous forme de fichier ZIP :

  1. Ouvrez le projet PerformanceCodelab qui contient les branches suivantes :
  • main : contient le code de démarrage de ce projet, que vous allez modifier tout au long de l'atelier.
  • end : contient le code de solution pour cet atelier.

Nous vous recommandons de commencer avec la branche main et de suivre l'atelier de programmation étape par étape, à votre rythme.

  1. Si vous souhaitez voir le code de solution, exécutez la commande suivante :
$ git clone -b end https://github.com/android/codelab-android-compose.git

Vous pouvez également télécharger le code de solution :

Facultatif : traces système utilisées dans cet atelier de programmation

Vous exécuterez plusieurs benchmarks qui captureront les traces système au cours de l'atelier.

Si vous n'arrivez pas à exécuter ces tests, voici une liste de traces système que vous pouvez télécharger à la place :

3. Approche pour résoudre les problèmes de performances

Il est possible de repérer une interface utilisateur lente et non performante en explorant simplement l'application. Mais avant de vous jeter à l'eau et de commencer à corriger le code sur la base de vos hypothèses, vous devez évaluer les performances de votre code pour comprendre si vos modifications l'amélioreront.

Pendant le développement, avec un build debuggable de votre application, vous pourriez remarquer que quelque chose n'est pas aussi performant que nécessaire et vous pourriez être tenté de résoudre ce problème. Cependant, les performances d'une application debuggable ne sont pas représentatives de ce que verront vos utilisateurs, il est donc important de confirmer ce problème de performances à l'aide d'une application non-debuggable. Dans une application debuggable, tout le code doit être interprété par l'environnement d'exécution.

En ce qui concerne les performances dans Compose, il n'existe pas de règle absolue à suivre pour implémenter une fonctionnalité particulière. Vous devez éviter de procéder à certaines actions trop rapidement :

  • Ne cherchez pas à corriger chaque paramètre instable qui se glisse dans votre code.
  • Ne supprimez pas les animations qui entraînent une recomposition d'un composable.
  • Ne procédez pas à des optimisations difficiles à lire sur la base de votre intuition.

Toutes ces modifications doivent être effectuées en