Descripción de los métodos de recopilación de rendimiento del generador de perfiles

En este documento se describen los métodos de recopilación de datos que utilizan las herramientas dentro del Generador de perfiles de rendimiento de Visual Studio.

Muestreo

El muestreo recopila datos estadísticos sobre el trabajo que realiza una aplicación durante la generación de perfiles y es un buen punto de partida para encontrar áreas para acelerar la aplicación. El método Muestreo recopila a intervalos especificados información sobre las funciones que se ejecutan en la aplicación. La recopilación de datos se realiza mediante la recopilación de información de la aplicación a intervalos regulares o según una frecuencia de muestreo, como cada milisegundo, y analizando después estos datos para crear un modelo del tiempo dedicado a la aplicación. Si necesita mediciones precisas de los tiempos de llamada o busca problemas de rendimiento en una aplicación por primera vez, es posible que desee usar el muestreo.

El muestreo tiene menos precisión en el número de llamadas, pero es bajo costo para el generador de perfiles y tiene poco efecto en la ejecución de la aplicación que se está generando el perfil. Las herramientas del Generador de perfiles de rendimiento que usan el método de muestreo incluyen la herramienta Uso de CPU.

Una vez finalizada la recopilación de datos, la herramienta Uso de CPU analiza los datos capturados y muestra el informe.

Seguimiento

El seguimiento proporciona una mejor información sobre la frecuencia con la que se ejecutó un método. Si necesita medidas precisas de números de llamada, use el seguimiento. El seguimiento puede tener un impacto mayor en el rendimiento del código durante la recopilación, pero el muestreo solo tiene una pequeña sobrecarga. Además, el seguimiento puede ser más lento para analizarlo porque tarda más tiempo en ver los datos después de la recopilación.

Instrumentación

La generación de perfiles de instrumentación recopila información detallada sobre el trabajo realizado por una aplicación durante una de generación de perfiles. La recopilación de datos se realiza mediante herramientas que insertan código en un archivo binario que captura información de tiempo o mediante enlaces de devolución de llamada para recopilar y emitir la información exacta de tiempo y recuento de llamadas mientras se ejecuta una aplicación. El método de instrumentación tiene una sobrecarga alta en comparación con los enfoques basados en el muestreo. Las herramientas del Generador de perfiles de rendimiento que usan instrumentación incluyen la herramienta de Instrumentación y la de Asignación de objetos .NET.

Muestreo frente a instrumentación

El valor del muestreo es que tiene menos sobrecarga y, por este motivo, es más probable que sea estadísticamente representativo de la aplicación que se ejecuta en producción. El valor de la generación de perfiles de instrumentación es que puedes obtener recuentos exactos de llamadas en lo que respecta a cuántas veces se llamó a las funciones. Esto proporciona una información mucho más detallada que el muestreo normal, el cual no es tan preciso al calcular el tiempo invertido en algunos escenarios. Por ejemplo, las funciones que son más secundarias, pero que se llaman con frecuencia, se mostrarán más veces en comparación con un escenario real.

Con la instrumentación, todas las llamadas de función seleccionadas en la aplicación se anotan e instrumentan para que, cuando se invoque, se agregue al seguimiento junto con la información del autor de la llamada. Con el muestreo, la pila de llamadas actual que se ejecuta se sondea desde la CPU a intervalos y, a continuación, cada fotograma se agrega al seguimiento.