Différence entre les profils de référence et les profils de démarrage

Ce document explique la différence entre les profils de référence et les profils de démarrage.

Vous pouvez utiliser le plug-in Baseline Profile Gradle pour capturer automatiquement les fichiers de profil de référence lisibles par l'homme générés par les tests BaselineProfileRule. Lors de la compilation de l'application, le plug-in Android Gradle (AGP) compile ces règles de profil lisibles par l'homme dans un format binaire, empaqueté sous forme de baseline.prof dans l'Android Package Kit (APK) ou l'Android App Bundle (AAB), que l'Android Runtime (ART) peut utiliser efficacement pour la compilation sur l'appareil, à condition que le profil binaire soit inférieur à 1,5 Mo.

Les fichiers de profil produits sont généralement nommés startup-prof.txt et baseline-prof.txt.

profil de référence

Le fichier de profil de référence contient un ensemble complet de règles qu'ART utilise pour précompiler les chemins de code fréquemment utilisés, ce qui optimise le démarrage de l'application, réduit les à-coups d'interaction et améliore les performances d'exécution globales.

Le fichier de profil de référence est généralement un sur-ensemble des règles figurant dans votre profil de démarrage. Ce fichier inclut toutes les règles requises pour l'optimisation du démarrage de l'application (générées par le biais de la tâche Gradle baselineProfile), ainsi que des profils supplémentaires pour d'autres parcours utilisateur critiques. Par exemple, le défilement et la navigation entre différents écrans.

Ces règles non liées au démarrage sont générées quelle que soit la valeur du champ de configuration includeInStartupProfile. Pour en savoir plus, consultez Présentation des profils de référence.

Profil de la start-up

Le fichier de profil de démarrage contient des règles spécifiquement optimisées pour le chemin de démarrage de votre application. Lors de la compilation, D8 et R8 consomment du bytecode Java pour produire des fichiers Dalvik Executable (DEX). D8 et R8 utilisent des profils de démarrage pour optimiser la mise en page DEX en plaçant le code de démarrage critique dans le fichier .dex principal afin d'accélérer le chargement des classes. Pour obtenir les gains de performances les plus importants, le code de démarrage doit être contenu dans ce fichier .dex principal. Si la taille cumulée du code de démarrage est trop importante, elle déborde dans les fichiers DEX suivants, qui sont souvent remplis de classes et de méthodes non essentielles, ce qui ralentit le démarrage.

Bien qu'un profil de démarrage fournisse les métadonnées nécessaires à l'optimisation de la mise en page DEX, l'optimisation du code R8 peut être très efficace pour faciliter ce processus. En supprimant le code inutilisé et en minimisant le bytecode, R8 réduit l'empreinte totale de la logique de démarrage. Cette réduction augmente la probabilité que le code critique reste dans le fichier .dex principal, ce qui évite le dépassement de capacité et assure une exécution plus efficace sur une plus large gamme de versions d'Android. En général, vous devez définir includeInStartupProfile sur true uniquement pour les scénarios de test essentiels à l'affichage initial de l'application.

Pour en savoir plus, consultez Présentation des profils de démarrage.