La pestaña Top Down muestra una lista de llamadas en las que la expansión de un nodo de función o método muestra sus destinatarios. En la Figura 2, se muestra un gráfico de Top Down correspondiente al siguiente gráfico de llamadas. Cada flecha del gráfico apunta de un emisor a un destinatario.
Figura 1: Ejemplo de gráfico de llamadas en el que se muestran los tiempos self, children y total para el método D
Como se muestra en la Figura 2, cuando se expande el nodo para el método A en la pestaña Top Down, se muestran sus destinatarios, los métodos B y D. Luego, cuando se expande el nodo para el método D, se muestran sus destinatarios, como los métodos B y C. Al igual que en la pestaña Flame chart, en el árbol de Top Down, se agrega la información de seguimiento de métodos idénticos que comparten la misma pila de llamadas. Es decir, en la pestaña Flame chart, se proporciona una representación gráfica de la pestaña Top down.
La pestaña Top Down proporciona la siguiente información para ayudar a describir el tiempo de CPU invertido en cada llamada (los tiempos también se representan como un porcentaje del tiempo total del subproceso en el rango seleccionado):
- Self: Es la cantidad de tiempo que tardó la llamada al método o la función en ejecutar su propio código y no el de sus destinatarios, como se muestra en la Figura 1 para el método D.
- Children: Es la cantidad de tiempo que la llamada al método o la función tardó en ejecutar el código de sus destinatarios y no el suyo propio, como se muestra en la Figura 1 para el método D.
- Total: Es la suma de los tiempos Self y Children del método. (representa el tiempo total que la app tardó en ejecutar una llamada, como se ilustra en la Figura 1 para el método D).

Figura 2: Árbol de Top Down

Figura 3: Árbol de Bottom Up para el método C de la Figura 5
La pestaña Bottom Up muestra una lista de llamadas en las que la expansión de un nodo o método de función muestra sus emisores. En la Figura 2, con el seguimiento de ejemplo que se muestra en la Figura 3, se proporciona un árbol Bottom Up para el método C. Al abrirse el nodo para el método C en el árbol Bottom Up, se muestra cada uno de sus emisores únicos, los métodos B y D. Ten en cuenta que, aunque B llama a C dos veces, B aparece una sola vez cuando se expande el nodo para el método C en el árbol Bottom Up. Luego, al expandirse el nodo para B, se muestran sus emisores, los métodos A y D.
La pestaña Bottom Up es útil para ordenar los métodos o funciones según los que más (o menos) tiempo de CPU consumen. Además, puedes inspeccionar cada nodo para determinar qué emisores pasan la mayor cantidad de tiempo de CPU invocando esos métodos o funciones. En comparación con el árbol de Top Down, la información de sincronización para cada método o función en un árbol de Bottom Up tiene que ver con el método que está en la parte superior de cada árbol (nodo superior). El tiempo de CPU también se representa como un porcentaje del tiempo total del subproceso durante ese registro. La siguiente tabla ayuda a comprender la manera en que debe interpretarse la información de sincronización para el nodo superior y sus emisores (subnodos).
Self | Children | Total | |
---|---|---|---|
Método o función en la parte superior del árbol Bottom Up (nodo superior) | Representa el tiempo total que el método o la función tardó en ejecutar su propio código y no el de sus destinatarios. En comparación con el árbol de Top Down, esta información de tiempo representa una suma de todas las llamadas a este método o esta función durante el registro. | Representa el tiempo total que el método o la función tardó en ejecutar sus destinatarios y no su propio código. En comparación con el árbol de Top Down, esta información de tiempo representa la suma de todas las llamadas a los destinatarios de este método o función durante el registro. | La suma de los tiempos self y children |
Emisores (subnodos) | Representa el tiempo total del destinatario cuando lo llama el emisor. Al usar el árbol de Bottom Up de la Figura 6 como ejemplo, el tiempo self para el método B sería igual a la suma de los tiempos self de cada ejecución del método C cuando lo llama B. | Representa el tiempo children total del destinatario cuando lo invoca el emisor. Al usar el árbol de Bottom Up de la Figura 6 como ejemplo, el tiempo children del método B sería igual a la suma de los tiempos children de cada ejecución del método C cuando lo llama B. | La suma de los tiempos self y children |
Nota: Para un registro en particular, Android Studio deja de recopilar datos nuevos cuando el generador de perfiles alcanza el límite de tamaño de archivo (esto, sin embargo, no detiene el registro). Normalmente, esto sucede mucho más rápido cuando se llevan a cabo seguimientos instrumentados, ya que este tipo de seguimiento recopila más datos en un período más corto, en comparación con un seguimiento muestreado. Si extiendes el tiempo de inspección a un período del registro que se produjo luego de alcanzar el límite, no cambiarán los datos de sincronización del panel de seguimiento (ya que no habrá nuevos datos disponibles). Además, en el panel de seguimiento, se muestra NaN para la información de sincronización cuando seleccionas solo la parte de un registro que no tiene datos disponibles.