¿Qué herramienta de rendimiento debo usar? (C#, Visual Basic, C++, F#)

Visual Studio proporciona una variedad de herramientas de generación de perfiles que le ayudarán a diagnosticar diferentes tipos de problemas de rendimiento de la aplicación según el tipo de aplicación. En este artículo, proporcionamos información para ayudarle a empezar a encontrar la herramienta adecuada para su escenario y tipo de aplicación.

Para obtener un enfoque general de la optimización del código mediante las herramientas de generación de perfiles, consulte Caso práctico: Guía para principiantes sobre la optimización del código.

¿Qué herramienta debo usar?

En la tabla siguiente se enumeran las distintas herramientas que ofrece Visual Studio y se proporcionan escenarios comunes para elegir la herramienta.

Herramienta de rendimiento Descripción ¿Cuándo usar la herramienta?
Uso de CPU Muestra dónde pasa tiempo la CPU. • Comienzo de una investigación para los problemas de rendimiento generales.
• Investigue el elevado uso de CPU del servidor.
• Investigue escenarios de DevOps, como cuando los pedidos no pasan al sitio web comercial.
• Optimice el uso de la CPU.
• Investigue la latencia en las llamadas API.
Grafo de llamas Vista dentro de la herramienta Uso de CPU que proporciona una visualización alternativa del árbol de llamadas. Investigue la latencia en las llamadas API
Ruta de acceso activa Vista dentro de la herramienta Uso de la CPU que muestra dónde se gastó la mayor parte del tiempo de la CPU en su aplicación. Investigue la latencia en las llamadas API
Uso de memoria Muestra la memoria de la aplicación para encontrar problemas como fugas de memoria. • Optimice el uso de memoria
• Investigue la inmovilización de la interfaz de usuario
• Investigue la presunta fuga de memoria (código nativo)
Asignación de objetos .NET Muestra dónde se asignan los objetos .NET e información sobre la recolección de elementos no utilizados. • Optimice el uso de memoria de .NET
• Analice la recolección de elementos no utilizados
Instrumentación Muestra los recuentos exactos de llamadas y los tiempos de llamada. • Necesita una herramienta como Uso de CPU, pero desea recuentos exactos de llamadas y tiempo invertido en funciones según el tiempo del reloj.
• Desea ver el tiempo bloqueado, como el tiempo dedicado a esperar bloqueos.
• Nota: Esta herramienta requiere una sobrecarga adicional.
E/S de archivos Muestra las operaciones de E/S de archivos y cuánto tiempo tardan y cuántos datos procesan. Investigación de la inmovilización de la interfaz de usuario
Sugerencias de rendimiento Muestra una medición rápida de la información de rendimiento al interactuar con el código. Durante la depuración, quiere ver el tiempo transcurrido entre la operación de paso anterior (o punto de interrupción) en el paso o punto de interrupción actual.
Visor de eventos Muestra solicitudes HTTP, mensajes de registro y excepciones. • Investigue la latencia en las llamadas API
• Investigue la aplicación lenta que se ejecuta en un servidor web remoto
.NET Async Muestra el uso de async/await en aplicaciones .NET. Investigue el presunto problema de rendimiento con código asincrónico.
Contadores de .NET Informe activo para contadores de .NET. • Inicie una investigación de problemas generales de rendimiento.
• Desea un seguimiento de las métricas basadas en contadores de .NET, como excepciones por segundo, recolección de elementos no utilizados y uso de CPU.
Base de datos Muestra el rendimiento de las consultas de base de datos. Investiga el rendimiento para las consultas de base de datos que usen ADO.NET o Entity Framework Core.
Uso de GPU Muestra el uso de hardware de alto nivel de la aplicación Direct3D. Compruebe ver si el rendimiento de la aplicación está enlazado a CPU o enlazado a GPU.
Escala de tiempo de la aplicación Muestra el rendimiento de la interfaz de usuario para las aplicaciones XAML. Investigue el rendimiento de la interfaz de usuario en aplicaciones XAML, como el tiempo dedicado a representar marcos.
IntelliTrace Herramienta del depurador que permite registrar eventos y examinar el estado de la aplicación en varios puntos de ejecución. Quiere que una herramienta examine el estado de la aplicación en varios puntos, no solo el estado de la aplicación actual.

¿Qué herramientas se admiten para mi proyecto?

En esta tabla se muestra una lista de las distintas herramientas que ofrece Visual Studio y los tipos de proyecto con los que las puede usar:

Herramienta de rendimiento .NET C/C++ UWP ASP.NET/ASP.NET Core
Uso de CPU
Uso de memoria
Asignación de objetos .NET no
Instrumentación
E/S de archivos
Sugerencias de rendimiento
Visor de eventos
.NET Async no
Contadores de .NET Sí (solo para .NET Core 5) no No sí (solo ASP.NET Core)
Base de datos Sí (solo para .NET Core 5) no No sí (solo ASP.NET Core)
Uso de GPU no
Escala de tiempo de la aplicación sí (XAML) no no
Explorador de rendimiento No no no No
IntelliTrace Solo .NET con Visual Studio Enterprise no Solo .NET con Visual Studio Enterprise Solo .NET con Visual Studio Enterprise

¿Qué herramientas se admiten en Linux?

Las siguientes herramientas son compatibles con Linux como plataforma de destino, así como Con Windows:

  • Uso de CPU
  • Seguimiento de la asignación de objetos .NET
  • .NET Async
  • Contadores de .NET
  • Visor de eventos
  • Base de datos

Aprender a usar generadores de perfiles

Los siguientes artículos y entradas de blog proporcionan más información para ayudarle a aprender a usar las herramientas de rendimiento de Visual Studio de forma eficaz.