L'onglet Top Down affiche une liste d'appels dans laquelle le développement d'un nœud de méthode ou de fonction affiche les appelés. La figure 2 illustre un graphique de haut en bas pour le graphique d'appel suivant. Chaque flèche du graphique pointe d'un appelant vers un appelé.
Figure 1 : Exemple de graphique d'appel illustrant le temps propre, le temps enfants et le temps total pour la méthode D.
Comme le montre la figure 2, le développement du nœud de la méthode A dans l'onglet Top Down affiche les appelés de cette méthode, à savoir les méthodes B et D. Ensuite, le développement du nœud de la méthode D expose ses appelés, tels que les méthodes B et C. À l'instar de l'onglet Flame chart, l'arborescence de haut en bas agrège les informations de trace pour les méthodes identiques qui partagent la même pile d'appel. En d'autres termes, l'onglet Flame chart fournit une représentation graphique de l'onglet Top Down.
L'onglet Top Down fournit les informations suivantes pour décrire le temps CPU consacré à chaque appel (les durées sont également exprimées sous la forme d'un pourcentage du temps total du thread sur la plage sélectionnée) :
- Self (Parent) : temps passé par l'appel de méthode ou de fonction à exécuter son propre code, et non celui de ses appelés, comme le montre la figure 1 pour la méthode D.
- Children (Enfants) : temps passé par l'appel de méthode ou de fonction à exécuter ses appelés, et non son propre code, comme le montre la figure 1 pour la méthode D.
- Total : somme des durées Self et Children de la méthode. Il s'agit du temps total que l'application a passé à exécuter un appel, comme le montre la figure 1 pour la méthode D.

Figure 2. Arborescence de haut en bas.

Figure 3. Arborescence de bas en haut pour la méthode C de la figure 5.
L'onglet Bottom Up affiche une liste d'appels dans laquelle le développement du nœud d'une méthode ou d'une fonction affiche les appelants. À l'aide de l'exemple de trace illustré à la figure 2, la figure 3 présente une arborescence de bas en haut pour la méthode C. L'ouverture du nœud de la méthode C dans l'arborescence de bas en haut affiche chacun de ses appelants uniques, les méthodes B et D. Bien que B appelle C à deux reprises, B n'apparaît qu'une seule fois lors du développement du nœud pour la méthode C dans l'arborescence de bas en haut. Ensuite, le développement du nœud de la méthode B affiche ses appelants, les méthodes A et D.
L'onglet Bottom Up est utile pour trier les méthodes ou fonctions suivant leur consommation de temps CPU. Vous pouvez inspecter chaque nœud pour identifier les appelants qui consacrent le plus de temps CPU à appeler ces méthodes ou fonctions. Par rapport à l'arborescence de haut en bas, les informations de durée de chaque méthode ou fonction d'une arborescence de bas en haut font référence à la méthode située en haut de chaque arborescence (nœud supérieur). Le temps CPU est également représenté sous la forme d'un pourcentage du temps total du thread au cours de cet enregistrement. Le tableau suivant vous explique comment interpréter les informations de durée pour le nœud supérieur et ses appelants (sous-nœuds).
Propre | Enfants | Total | |
---|---|---|---|
Méthode ou fonction située au sommet de l'arborescence de bas en haut (nœud supérieur) | Représente le temps total passé par la méthode ou fonction à exécuter son propre code, et non celui de ses appelés. Par rapport à l'arborescence de haut en bas, ces informations de durée représentent la somme de tous les appels à cette méthode ou fonction pendant la durée de l'enregistrement. | Représente le temps total passé par la méthode ou fonction à exécuter ses appelés, et non son propre code. Par rapport à l'arborescence de haut en bas, ces informations de durée représentent la somme de tous les appels aux appelés de cette méthode ou fonction pendant la durée de l'enregistrement. | Somme du temps propre et du temps enfants. |
Appelants (sous-nœuds) | Représente le temps propre total de l'appelé lorsqu'il est appelé par l'appelant. En utilisant comme exemple l'arborescence de bas en haut de la figure 6, le temps propre de la méthode B correspond à la somme des temps propres de chaque exécution de la méthode C lorsqu'elle est appelée par B. | Représente le temps enfants total de l'appelé lorsqu'il est appelé par l'appelant. En utilisant comme exemple l'arborescence de bas en haut de la figure 6, le temps enfants de la méthode B correspond à la somme des temps enfants de chaque exécution de la méthode C lorsqu'elle est appelée par B. | Somme du temps propre et du temps enfants. |
Remarque : Pour un enregistrement donné, Android Studio cesse de collecter de nouvelles données lorsque le profileur atteint la taille de fichier maximale (cependant, cela n'arrête pas l'enregistrement). En règle générale, cela se produit beaucoup plus rapidement lors de l'exécution de traces instrumentées, car ce type de traçage collecte davantage de données en moins de temps qu'une trace échantillonnée. Si vous étendez la durée d'inspection à une période de l'enregistrement qui s'est produite après avoir atteint la limite, les données temporelles du volet de trace ne changent pas (car aucune nouvelle donnée n'est disponible). De plus, le volet de trace affiche NaN pour les informations de durée lorsque vous ne sélectionnez que la partie d'un enregistrement pour laquelle aucune donnée n'est disponible.