Centrar el gráfico tipo llamas
Cuando usas el filtro Enfoque, seleccionas una sola función y el gráfico de llamas muestra las rutas de código que entran y salen de esa función específica. Un gráfico centrado te permite realizar dos tareas habituales:
- Analizar el consumo de recursos agregado de una función determinada que se llama desde varios lugares.
- Analizar la proporción de tiempo dedicado a una función para diferentes llamadas de la función.
Por ejemplo, ¿cómo se analiza el consumo de recursos de la función Sort
con el gráfico de llamas estándar?
En la siguiente sección, nos centraremos en el gráfico Sort
y responderemos a esta pregunta.
Los gráficos de llamas de esta página se han creado con los valores predeterminados Nombre y Ninguno en los campos Modo de color y Comparar con, respectivamente.
Explicación del gráfico enfocado
El gráfico creado por el filtro Enfoque crea dos gráficos de llamas de forma eficaz para la función especificada y los une:
En el gráfico anterior, el marco correspondiente a la función Sort
tiene el ancho completo y está resaltado. El texto del marco incluye el nombre de la función, un porcentaje y el número de perfiles usados en el análisis. En este caso, las métricas indican que la función Sort
, en conjunto, consumió el 8,85% del tiempo de CPU.
En la mitad inferior del gráfico anterior, la función Sort
se trata como el punto de partida de un gráfico de llamas estándar y se muestran todos sus elementos llamados.
Puedes crear esta parte con el gráfico de llamas estándar usando el filtro Mostrar desde marco:
La mitad superior del gráfico muestra las llamadas de Sort
con los destinatarios ocultos. Puedes hacer una aproximación de la mitad superior con una serie de filtros.
Empieza añadiendo un filtro Mostrar pilas para Sort
. A continuación, para cada función
llamada por Sort
, añade Ocultar pilas u Ocultar marcos. En esta situación, añadirías un Hide stacks para quickSort
para eliminar esta función y sus elementos secundarios, y, a continuación, añadirías Hide frames para Len
y maxDepth
:
Con estos filtros, la aproximación de la parte superior del gráfico enfocado muestra que se accede a la función Sort
a través de diferentes pilas de llamadas. Sin embargo, las métricas no se agregan, por lo que el gráfico no muestra el consumo general de métricas por parte de Sort
.
El gráfico centrado es un poco diferente de un gráfico que solo combina las dos aproximaciones:
- La función de enfoque
Sort
tiene un solo marco. - El marco de la función de enfoque está resaltado, es un marco de ancho completo y muestra métricas que son la agregación de todas las pilas de llamadas.
- Hay varias pilas de llamadas, cada una de ellas empieza con un marco
root
, por lo que puedes ver la pila de llamadas completa.
Seleccionar un marco
Si seleccionas un marco en un gráfico enfocado, el gráfico de llamas se volverá a dibujar y se mostrará la pila de llamadas de ese marco con más detalle. Si se llega al marco a través de varias pilas de llamadas, se mostrará cada una de esas pilas. Las pilas de llamadas que no incluyen el marco se ocultan. Para restaurar el gráfico a su estado original, selecciona el marco que corresponda a la función de enfoque.
En el ejemplo anterior, Sort
se llama por (*byFreq).sort
y por (*byLiteral).sort
. Para ver la pila de llamadas de (*byLiteral).sort
con más detalle, selecciona ese marco.
Puedes seleccionar otro marco y refinar aún más las pilas de llamadas que se muestran:
Para restaurar un gráfico de llamas enfocado a su estado original, selecciona el marco que muestra el valor del filtro Enfoque. En este caso, selecciona el marco gris con la etiqueta Sort
. Ten en cuenta que, para restaurar un gráfico de llamas estándar a su estado original, debes seleccionar el marco raíz.
Analizar el gráfico
Para analizar un gráfico de llamas centrado, se usan los mismos controles y filtros que para analizar un gráfico de llamas estándar. Sin embargo, hay diferencias en la forma en que los gráficos interactúan con el puntero:
Si colocas el cursor sobre un marco, la descripción emergente muestra los datos de la métrica. En un gráfico de llamas estándar, se muestran los datos de métricas totales del marco. En un gráfico de llamas centrado, se muestran los datos de métricas agregados de la función.
Si seleccionas un marco, el gráfico de llamas se vuelve a dibujar con ese marco a pantalla completa. Para restaurar un gráfico de llamas estándar a su forma original, debes seleccionar el marco superior. Para restaurar un gráfico de llamas enfocado a su forma original, debes seleccionar el marco que muestra el valor del filtro de enfoque.
Para obtener información sobre el gráfico centrado al comparar perfiles, consulta Centrar una comparación.
Definir el filtro de enfoque
Hay diferentes métodos para definir un filtro de enfoque, pero todos dan como resultado el mismo gráfico.
Usando el gráfico
Coloca el cursor sobre el marco que te interese y, a continuación, haz clic en Enfocar en la
descripción emergente del marco.
La función de enfoque se extrae del marco.
En este ejemplo, el gráfico de llamas, que se ha ampliado en torno a la función (*huffmanBitWriter).write
, muestra tres pilas de llamadas diferentes:
Usando la lista de enfoque
Para centrar el gráfico tipo llamas en una función específica, haz lo siguiente:
- Haz clic en Lista list para abrir la tabla Seleccionar función de enfoque.
- Selecciona un nombre de función de la tabla o, para una función específica, haz clic en Acciones more_vert y, a continuación, en Centrar:
Si la función que ha seleccionado se puede llamar a través de diferentes pilas de llamadas, cada pila de llamadas se muestra en el gráfico de llamas.
Puede ordenar las filas de la tabla en orden ascendente arrow_upward o descendente arrow_downward seleccionando un elemento de encabezado de la tabla.
Cada fila de la tabla muestra el nombre de una función y estadísticas relacionadas con la ejecución de la función.
En esta tabla se muestra que la función (*compressor).deflate
tarda 2,78 s en ejecutarse, de los cuales 1,8 s se invierten en la propia función y el resto del tiempo se dedica a su pila de llamadas.
Una columna de porcentaje indica que el 57% del tiempo total de ejecución se dedica a la función (*compressor).deflate
. Otra columna indica que el 89% del tiempo se está ejecutando (*compressor).deflate
o una función de su pila de llamadas.
Por último, en la columna de recuento se indica que hay tres secuencias que invocan la función (*compressor).deflate
.
Cuando comparas perfiles, el contenido de la lista de enfoque es diferente. Para obtener más información, consulta el artículo Centrar la atención en una comparación.
Usando la barra de filtros
Haga clic en el texto gris Añadir filtro de datos de perfil en la barra de filtros y, a continuación, introduzca Focus:
y una cadena que identifique la función en la que quiere centrarse. Puedes usar una subcadena, incluidos los prefijos de paquete, o el nombre completo. Cuando proporcionas una cadena ambigua, se selecciona la función que mejor se ajusta a la cadena.
Si lo prefieres, puedes hacer clic en Filtros, seleccionar Centrar y, a continuación, introducir la cadena identificadora.
Si la función que ha seleccionado se puede llamar a través de diferentes pilas de llamadas, cada pila de llamadas se muestra en el gráfico de llamas.
Quitar el filtro de enfoque
Para quitar el filtro de enfoque, haz clic en Cerrar close en el filtro.