Traçage d'une composition

Stay organized with collections Save and categorize content based on your preferences.

Les traces sont souvent les meilleures sources d'informations pour identifier un problème de performances. Elles vous permettent de formuler une hypothèse quant à la nature du problème et de savoir où commencer à chercher.

Il existe deux niveaux de traçage compatibles avec Android : le traçage système et le traçage de méthode.

Étant donné que le traçage système ne trace que les zones spécialement identifiées pour le traçage, il présente des coûts faibles et n'affecte que peu les performances de votre application. Le traçage système est idéal pour déterminer la durée d'exécution de sections spécifiques de votre code.

Le traçage de méthode trace chaque appel de fonction dans votre application. C'est une procédure très coûteuse, et qui a donc un impact important sur les performances de votre application. En revanche, elle vous donne une vue d'ensemble de ce qui se passe, des fonctions appelées et de leur fréquence d'appel.

Par défaut, les traces système n'incluent pas les fonctions modulables individuelles. Celles-ci sont disponibles dans les traces de méthode.

Nous testons actuellement une nouvelle fonctionnalité de traçage système permettant d'afficher des fonctions modulables dans les traces système. Le but est d'allier la faible intrusion du traçage système au niveau de détail du traçage de méthode dans la composition.

Configurer le traçage des compositions

Pour tester le traçage des recompositions dans votre projet, vous devez installer les versions suivantes (ou versions ultérieures) :

  • Android Studio Flamingo Canary 5
  • Interface utilisateur de Compose : 1.3.0-beta01
  • Compilateur de Compose : 1.3.0

Vous devez utiliser au moins le niveau d'API 30 sur l'appareil ou l'émulateur sur lequel vous exécutez votre traçage.

De plus, vous devez ajouter une nouvelle dépendance au traçage d'exécution Compose :

implementation("androidx.compose.runtime:runtime-tracing:1.0.0-alpha01")

Avec cette dépendance, lorsque vous effectuez un traçage système incluant la recomposition, les fonctions modulables s'affichent automatiquement.

Exécuter un traçage système

Pour exécuter un traçage système et voir le nouveau traçage de recomposition en action, procédez comme suit :

  1. Ouvrez le profileur :

    Android Studio – Démarrage du profilage
    Figure 2. Android Studio – Démarrage du profilage
  2. Cliquez sur Chronologie du CPU.

    Profileur Android Studio – Chronologie du CPU
    Figure 3. Profileur Android Studio – Chronologie du CPU
  3. Dans votre application, accédez à l'interface utilisateur que vous souhaitez tracer, sélectionnez Trace système, puis Enregistrer.

    Options de traçage – Trace système
    Figure 4. Options de traçage – Trace système
  4. Utilisez votre application pour déclencher la recomposition et arrêter l'enregistrement. Une fois la trace traitée et affichée, vous devriez voir les composables dans la trace de recomposition. Vous pouvez utiliser le clavier et la souris pour zoomer et faire un panoramique sur la trace. Si vous ne savez pas comment parcourir une trace, consultez la documentation Traces d'enregistrement.

    Trace système
    Figure 5. Trace système

    Si vous double-cliquez sur un composable dans le graphique, vous êtes redirigé vers son code source.

  5. Vous pouvez également voir les composables dans le graphique de flammes, avec le fichier et le numéro de ligne :

    Graphique de flammes
    Figure 6. Graphique de flammes

Mises en garde

Coûts liés à la taille de l'APK

Bien que nous cherchions à minimiser autant que possible le coût de la fonctionnalité, la taille des APK pour les applications Compose augmente à cause des chaînes de traçage intégrées que le compilateur Compose intègre dans l'APK. Cette augmentation de taille peut être relativement faible si votre application n'utilise pas beaucoup Compose, ou importante pour les applications Compose complètes. De plus, ces chaînes de traçage ne sont pas obscurcies. Elles peuvent donc apparaître dans les outils de traçage, comme indiqué ci-dessus. À partir de la version 1.3.0, le compilateur Compose les injecte dans toutes les applications.

Vous pouvez supprimer les chaînes de traçage de votre build de production en ajoutant la règle proguard suivante :


-assumenosideeffects public class androidx.compose.runtime.ComposerKt {

   boolean isTraceInProgress();

   void traceEventStart(int,int,int,java.lang.String);

   void traceEventStart(int,java.lang.String);

   void traceEventEnd();

}

Ces fonctions pourront changer à l'avenir, mais toute modification sera mentionnée dans les notes de version de Compose.

Notez que les conserver, même si cela augmente le coût dû à la taille de l'APK, vous permet de vous assurer que l'APK en cours de profilage est identique à celui utilisé par les utilisateurs de l'application.

Horodatage précis

Pour un profilage précis, comme pour tout test de performances, vous devez rendre l'application profileable / non-debuggable, conformément aux consignes sur les applications profilables.

Commentaires

N'hésitez pas à nous faire part de vos commentaires sur cette fonctionnalité, des bugs que vous pourriez rencontrer et de vos demandes éventuelles. Vous pouvez nous envoyer vos commentaires via l'outil Issue Tracker.