Instrumentación de la aplicación .NET en Visual Studio (C#, C++, Visual Basic, F#)
Con el lanzamiento de Visual Studio 2022, versión 17.5, puede usar la nueva herramienta de instrumentación dinámica. Esta herramienta muestra el número exacto de veces que se llama a las funciones y es más rápida que la versión anterior de la herramienta de instrumentación. Esta herramienta admite la instrumentación de .NET Core sin necesidad de archivos PDB. A partir de Visual Studio 2022, versión 17.6 Preview 2, la herramienta también admite C/C++.
La herramienta es similar a la de Uso de CPU, excepto que se basa en el tiempo del reloj en lugar de en el uso de la CPU. Esto significa que el tiempo bloqueado, como el tiempo dedicado a esperar bloqueos, se muestra en el seguimiento de la instrumentación, a diferencia de la herramienta Uso de CPU. Para más información sobre cómo aprender a usar la herramienta instrumentación de forma eficaz, consulte Información general sobre instrumentación y Caso práctico: Aislar un problema de rendimiento.
Instrumentación de la aplicación
Seleccione Alt+F2 (o Depurar > Generador de perfiles de rendimiento) para abrir el Generador de perfiles de rendimiento en Visual Studio.
Seleccione la casilla Instrumentación.
Si habilita la opción Iniciar con la recopilación en pausa antes de iniciar el generador de perfiles, los datos no se recopilarán hasta que seleccione el botón Grabar en la vista de sesión de diagnóstico.
Nota:
Si la herramienta no está disponible para la selección, desactive la casilla de cada una de las otras herramientas, porque algunas herramientas se deben ejecutar de forma independiente. Para más información sobre cómo ejecutar herramientas en conjunto, consulta: Uso de varias herramientas de generación de perfiles de manera simultánea.
Si la herramienta todavía no está disponible, compruebe que el proyecto cumple los requisitos anteriores. Asegúrese de que el proyecto esté en modo de versión para capturar los datos más precisos.
Seleccione el botón Iniciar para ejecutar la herramienta.
Selecciona los elementos del programa que se van a instrumentar.
A partir de la versión preliminar 1 de la versión 17.11 de Visual Studio 2022, el generador de perfiles conserva los elementos seleccionados para la siguiente ejecución de generación de perfiles.
Seleccione Aceptar.
Una vez que se inicie la ejecución de la herramienta, repase el escenario del que desea generar perfiles en su aplicación. Después, seleccione Detener colección o cierre la aplicación para ver los datos.
Análisis del informe de instrumentación
Los datos de generación de perfiles aparecen en Visual Studio.
La vista de datos de instrumentación muestra una lista de funciones ordenadas por ejecución más larga, con la función más larga que se está ejecutando en la parte superior, en Funciones principales. En la sección Ruta de acceso activa se muestra la pila de llamadas para las funciones que más tardan. Estas listas le ayudarán a detectar las funciones en las que se producen cuellos de botella de rendimiento.
Haga clic en una función que le interese y obtendrá una vista más detallada.
Los datos disponibles son similares a la de la herramienta de Uso de CPU, excepto que se basa en el tiempo del reloj y en los recuentos de llamadas, en lugar de en el uso de la CPU.
Análisis de información
Si alguna información aparece en la sección Información superior, use el vínculo proporcionado para obtener más información sobre el problema identificado. Para obtener más información, consulte Información de CPU, pero tenga en cuenta que la información de la herramienta de instrumentación es específica del tiempo del reloj y no del uso de la CPU.
Además, si usa Copilot, use el botón Preguntar a Copilot para abrir la ventana de chat de Copilot y Copilot proporcionará sugerencias basadas en un análisis del código y los problemas identificados.
Análisis de informes detallados de instrumentación
Para analizar el informe de instrumentación, haga clic en Abrir detalles o en una de las funciones principales para abrir la vista Funciones.
El informe proporciona distintas vistas de los datos de diagnóstico:
- Llamador o destinatario
- Árbol de llamadas
- Módulos
- Functions
- Grafo de llamas
En todas las vistas, excepto llamador o destinatario, el informe de diagnóstico se ordena por Total [unidad, %], de mayor a menor. Puede cambiar el criterio de ordenación o la columna de ordenación seleccionando los encabezados de columna. Puede hacer doble clic en una función que le interese y verá el origen de la función, así como el resaltado que muestra dónde se invierte el tiempo en esa función. En la tabla se muestran columnas con datos como el tiempo empleado en la función, incluidas las funciones llamadas (Total) y una segunda columna que muestra el tiempo empleado en una función, excepto las funciones llamadas (Propio).
Estos datos pueden ayudarle a evaluar si la función en sí es un cuello de botella de rendimiento. Determine cuántos datos muestra el método para ver si el código de terceros o las bibliotecas en tiempo de ejecución son el motivo de que los puntos de conexión sean lentos o consuman recursos intensivamente.
Para obtener más información sobre el uso del gráfico de llamas, consulte Identificación de rutas de acceso activas con el gráfico de llamas.
Árbol de llamadas de instrumentación
Para ver el árbol de llamadas, seleccione el nodo primario en el informe. De forma predeterminada, la página Instrumentación se abre en la vista Llamador y destinatario. En la lista desplegable Vista actual seleccione Árbol de llamadas. La vista de árbol de llamadas puede ayudarle a identificar rápidamente cuellos de botella de rendimiento.
Puede hacer clic en los botones Expandir ruta de acceso activa y Mostrar ruta de acceso activa para ver las llamadas de función que usan el mayor tiempo del reloj en la vista de árbol de las llamadas.
Aquí encontrará más información sobre los valores de columna:
Total indica cuánto tiempo se ha empleado en la función y en las funciones llamadas por ella. Los valores altos de Total apuntan a las funciones que consumen la mayor parte del tiempo de reloj.
Propio indica cuánto tiempo se ha empleado en el cuerpo de la función, excluyendo el tiempo empleado en las funciones a las que llamó. Los valores altos de Propio pueden indicar un cuello de botella de rendimiento dentro de la propia función.
Recuento de llamadas indica el número de veces que se llama a una función.
Módulo El nombre del módulo que contiene la función.