Compartir vía


Instrumentación de la aplicación .NET en Visual Studio (C#, C++, Visual Basic, F#)

Con la versión 17.5 de Visual Studio 2022, puede usar la nueva herramienta de instrumentación dinámica. Esta herramienta muestra el número exacto de veces que se llaman tus 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 información adicional sobre cómo aprender a usar la herramienta Instrumentación de forma eficaz, consulte Información general sobre la Instrumentación y Caso práctico: Aislar un problema de rendimiento.

Instrumenta tu aplicación

  1. Seleccione Alt+F2 (o Depurar > Generador de perfiles de rendimiento) para abrir el generador de perfiles de rendimiento en Visual Studio.

  2. Seleccione la casilla Instrumentación.

    Captura de pantalla que muestra la herramienta de instrumentación seleccionada.

    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 verificación de todas las demás herramientas porque algunas herramientas deben ejecutarse solas. Para obtener más información sobre cómo ejecutar herramientas conjuntamente, consulte Uso de varias herramientas de perfilado simultáneamente.

    Si la herramienta sigue sin estar 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.

  3. Seleccione el botón Iniciar para ejecutar la herramienta.

  4. Selecciona los elementos del programa que se van a instrumentar.

    Recorte de pantalla que muestra el cuadro de diálogo Seleccionar elementos para Instrumentar.

    A partir de la versión 17.11 preview 1 de Visual Studio 2022, el generador de perfiles conserva los elementos seleccionados para la siguiente ejecución de generación de perfiles.

  5. Seleccione Aceptar.

  6. Después de que la herramienta comience a ejecutarse, siga el escenario que desea perfilar 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.

Recorte de pantalla que muestra los datos de instrumentación de .NET. datos de instrumentación.

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 verá una vista más detallada.

Los datos disponibles son similares a la herramienta de uso del CPU, excepto que se basan en la hora de reloj y los recuentos de llamadas en lugar de la utilización del CPU.

Análisis de conclusiones

Si alguna idea aparece en la sección Información principal, utilice 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 de la hora del reloj y no del uso de la CPU.

Además, si usa Copilot, haga clic en el botón Preguntar a Copilot para abrir su ventana de chat, donde le proporcionará sugerencias basadas en un examen de su código y los problemas identificados.

Análisis de informes detallados de instrumentación

Para analizar el informe Instrumentación haga clic en Abrir detalles o haga clic en una de las funciones principales para abrir la vista Funciones.

El informe proporciona vistas diferentes de los datos de diagnóstico:

  • Llamador o destinatario
  • Árbol de llamadas
  • Módulos
  • Funciones
  • Gráfico de llamas

En todas las vistas excepto llamador o destinatario, el informe de diagnóstico se ordena por Total de [unit, %], 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 invertido en la función, incluidas las funciones llamadas (Total) y una segunda columna que muestra el tiempo invertido en una función, excepto las funciones denominadas (Self).

Estos datos pueden ayudarle a evaluar si la función en sí misma es un cuello de botella en el 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 que el consumo de recursos sea intensivo.

Para obtener más información sobre el uso de Flame Graph, consulte Identificar rutas críticas utilizando Flame Graph.

Á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/Receptor. En la lista desplegable Vista actual seleccione Árbol de llamadas. La vista de árbol de llamadas puede ayudar a identificar rápidamente los cuellos de botella en el rendimiento.

Puede hacer clic en los botones Expandir ruta crítica y Mostrar ruta crítica para ver las llamadas de función que utilizan más tiempo de reloj en la vista de árbol de llamadas.

Captura de pantalla que muestra la estructura del árbol de llamadas.

A continuación se muestra más información sobre los valores de columna:

  • Total indica cuánto tiempo se ha empleado en la función y en cualquier función que ésta haya invocado. Los valores altos de Total indican las funciones que consumen más tiempo del reloj.

  • Self indica cuánto tiempo se pasó en el cuerpo de la función, excluyendo el tiempo que se pasó en las funciones que fueron llamadas por ella. Los valores altos de Self 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 Nombre del módulo que contiene la función.