Como Jon Skeet escribió anteriormente, hay dos estrategias: instrumentación y muestreo.
La instrumentación se realiza tanto de forma manual como automática. En caso manual: el desarrollador inserta código manualmente para rastrear el inicio/final de una región de código de interés. Por ejemplo, un simple "StartTimer" y "EndTimer". Algunas herramientas de creación de perfiles también pueden hacer esto automáticamente; para ello, el generador de perfiles deberá realizar un análisis estático del código, es decir, analizará el código e identificará puntos de control importantes como el inicio/finalización de un método en particular. Esto es más fácil con los idiomas que admiten la reflexión (por ejemplo, cualquier idioma .net). Al usar 'reflexión', el generador de perfiles puede reconstruir todo el árbol de códigos fuente (junto con los gráficos de llamadas).
La toma de muestras la realiza el generador de perfiles y examina el código binario. El generador de perfiles también puede utilizar técnicas como enganchar o atrapar eventos/mensajes de Windows con el fin de crear perfiles.
Tanto la instrumentación como los métodos de muestreo tienen sus propios gastos generales. La cantidad de gastos generales depende, p. si la frecuencia de muestreo se establece en valores altos, entonces el propio perfil puede contribuir significativamente al rendimiento que se informa.
Vs de instrumentación Muestreo: No es que uno sea mejor que el otro enfoque. Ambos tienen su lugar.
El mejor enfoque es comenzar con un generador de perfiles basado en muestras y observar todo el nivel del sistema. Eso es ejecutar la muestra y ver el uso de recursos de todo el sistema: memoria, disco duro, red, CPU.
De lo anterior, identifique los recursos que se están ahogando.
Con la información anterior, ahora puede agregar instrumentación a su código para identificar al culpable. Por ejemplo, si la memoria es el recurso más utilizado, ayudará a instrumentar el código relacionado con la asignación de memoria. Tenga en cuenta que con la instrumentación realmente se está concentrando en un área particular de su código.
¿Qué quiere decir con "código administrado"? – tunnuz
http://en.wikipedia.org/wiki/Managed_code – aku