Enfocar el gráfico tipo llama
Cuando usas el filtro Enfocar, seleccionas una sola función, y el gráfico tipo llama muestra las rutas de código que van hacia esa función específica y que salen de ella. Un gráfico enfocado te permite realizar dos tareas comunes:
- Analizar el consumo total de recursos de una función determinada que se llama desde varios lugares
- Analizar la proporción de tiempo empleado en una función para diferentes emisores de la función
Por ejemplo, ¿cómo analizas el consumo de recursos en torno a la función Sort
con el gráfico tipo llama estándar?
En la siguiente sección, enfocamos el gráfico en Sort
y respondemos esta pregunta.
Los gráficos tipo llama de esta página se construyeron con las opciones Modo de color y Comparar con en los valores predeterminados de Nombre y Ninguno respectivamente.
Explicación del gráfico enfocado
El gráfico que resulta del filtro Enfocar crea de forma eficaz dos gráficos tipo llama para la función especificada y los une:
En el gráfico anterior, el marco correspondiente a la función Sort
es de ancho completo y está destacado. El texto del marco incluye el nombre de la función, un porcentaje y la cantidad de perfiles utilizados para el análisis. En este caso, las métricas indican que la función Sort
, en total, consumió el 8.85% del tiempo de CPU.
La mitad inferior del gráfico anterior trata la función Sort
como el punto de partida de un gráfico tipo llama estándar y muestra todos los destinatarios.
Puedes crear esta parte con el gráfico tipo llama estándar con el filtro Mostrar desde marco:
La mitad superior del gráfico muestra los emisores de Sort
con los destinatarios ocultos. Puedes hacer una aproximación de la mitad superior con una serie de filtros.
Comienza por agregar un filtro Mostrar pilas para Sort
. A continuación, para cada función que llame Sort
, agrega Ocultar pilas o bien Ocultar marcos. En este caso, debes agregar Ocultar pilas para quickSort
con el fin de eliminar esta función y sus elementos secundarios. Luego, agrega Ocultar marcos para Len
y maxDepth
:
Con estos filtros, la aproximación de la mitad superior del gráfico enfocado muestra que la función Sort
se alcanza a través de diferentes pilas de llamadas. Sin embargo, las métricas no se agregan, por lo que el gráfico no ilustra el consumo de métricas general por Sort
.
El gráfico enfocado es un tanto diferente de un gráfico que solo combina las dos aproximaciones:
- Hay un solo marco para la función de enfoque
Sort
. - El marco de la función de enfoque se destaca, 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 las cuales comienza con un marco
root
, por lo que puedes ver toda la pila de llamadas.
Selecciona un marco
Si seleccionas un marco en un gráfico enfocado, el gráfico tipo llama se vuelve a dibujar para mostrar con más detalle la pila de llamadas de ese marco. Si se llega al marco mediante varias pilas de llamadas, se muestra cada una de ellas. Las pilas de llamadas que no incluyen el marco se ocultan de la vista. Para restablecer el estado original del gráfico, selecciona el marco correspondiente a la función de enfoque.
En el ejemplo anterior, (*byFreq).sort
y (*byLiteral).sort
llaman a Sort
. Para ver la pila de llamadas de (*byLiteral).sort
con más detalle, selecciona ese marco.
Puedes seleccionar otro marco y definir mejor las pilas de llamadas que se muestran:
Para restablecer un gráfico tipo llama enfocado a su estado original, selecciona el marco que muestra el valor del filtro Enfocar. En este caso, selecciona el marco gris con la etiqueta Sort
. Ten en cuenta que, para restablecer un gráfico tipo llama estándar a su estado original, debes seleccionar el marco raíz.
Analiza el gráfico
Para analizar un gráfico tipo llama enfocado, usarás los mismos controles y filtros que usas para analizar un gráfico tipo llama estándar. Sin embargo, existen diferencias en la forma en que los gráficos interactúan con el puntero:
Si el puntero se desplaza sobre un marco, la información sobre la herramienta muestra los datos de las métricas. En un gráfico tipo llama estándar, se muestran los datos de las métricas totales del marco. En un gráfico tipo llama enfocado, se muestran los datos de las métricas agregadas de la función.
Si seleccionas un marco, el gráfico tipo llama se vuelve a dibujar y ese marco se muestra con ancho completo. Para restablecer un gráfico tipo llama estándar a su forma original, debes seleccionar el marco superior. Para restablecer un gráfico tipo llama 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 enfocado cuando comparas perfiles, consulta cómo enfocar una comparación.
Configura el filtro de enfoque
Existen diferentes métodos que puedes usar para configurar un filtro de enfoque, pero el resultado es mismo gráfico.
Mediante el uso del gráfico
Coloca el puntero en el marco que deseas y, luego, haz clic en Enfocar en la información de la herramienta del marco.
La función de enfoque se extrae del marco.
En este ejemplo, el gráfico tipo llama, que se expande alrededor de la función (*huffmanBitWriter).write
, muestra tres pilas de llamadas diferentes:
Mediante la lista de enfoque
Para enfocar el gráfico tipo llama en una función específica, haz lo siguiente:
- Haz clic en Lista list para abrir la tabla Seleccionar una función de enfoque (Select focus function).
- Selecciona un nombre de función de la tabla o, para una función específica, haz clic en Acciones (Actions) more_vert y, luego, selecciona Enfoque (Focus):
Si la función que seleccionaste se puede llamar a través de diferentes pilas de llamadas, se muestra cada una en el gráfico tipo llama.
Puedes ordenar las filas de la tabla en orden ascendente arrow_upward o descendente arrow_downward si seleccionas un elemento del encabezado de tabla.
Cada fila de la tabla muestra un nombre de función y estadísticas relacionadas con la ejecución de la función.
Esta tabla muestra que la función (*compressor).deflate
requiere 2.78 s para ejecutarse, con 1.8 s dedicados a la función y el resto del tiempo empleado en su pila de llamadas.
Una columna de porcentaje informa que el 57% del tiempo de ejecución total se invierte en la función (*compressor).deflate
. Otra columna informa que el 89% del tiempo, (*compressor).deflate
o una función en su pila de llamadas se está ejecutando.
Por último, la columna de recuento informa 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 cómo enfocar una comparación.
Mediante la barra de filtros
Haz clic en el texto gris Agregar filtro de datos de perfil en la barra de filtros y, luego, ingresa Focus:
y una string que identifique la función en la que te enfocarás. Puedes usar una substring, incluidos los prefijos del paquete o el nombre completo. Cuando proporcionas una string ambigua, se selecciona la función que mejor coincide con la string.
Si lo prefieres, puedes hacer clic en Filtros, seleccionar Enfocar y, luego, ingresar la string de identificación.
Si la función que seleccionaste se puede llamar a través de diferentes pilas de llamadas, se muestra cada una en el gráfico tipo llama.
Quita el filtro de enfoque
Para quitar el filtro de enfoque, haz clic en Cerrar close en el filtro.