2011-03-30 24 views
5

Estoy empezando a explorar el perfilador de rendimiento en VS 2010 y me resulta difícil encontrarlo útil. Me doy cuenta de que esto es más probable porque no estoy familiarizado con la herramienta.VS 2010 Performance Explorer

Lo que estoy buscando es una forma de identificar las llamadas al método que consumen más tiempo. Muchas veces solo identificará los métodos ASP.NET como los peores infractores, como ProcessRequest y etc., y es difícil limitarlo al método real que lleva tanto tiempo.

Me gustaría identificar las llamadas dentro de mi código que están tardando más en ejecutarse.

Cualquier puntero sería apreciado. Gracias!

Respuesta

2

Sé que esto es una vieja pregunta, pero algunos consejos que espero ayudar a usted u otras personas:

A partir de perfiles se detuvo.

Esto le permite simplemente Perfil La única página que desea enfocar, y reducir el ruido de la aplicación de disparar hacia arriba, la página de inicio de carga, navegando a lo que quiere medir, etc.

  • Desde el menú, seleccione Analizar> Profiler> Comience con perfiles pausa
  • continuación navegue por su página web hasta el punto justo antes la página que desea al perfil
  • Ahora en VS2010 en la página de perfil del clic 'Reanudar' a comenzar a perfilar
  • De nuevo en su sitio web, haga clic en el enlace o botón etc, para cargar la página que desea al perfil
  • Espere a que cargue, luego de vuelta en VS2010, haga clic en 'Detener perfiles'
  • Después de unos momentos de su perfil el resumen se cargará

Encontrar los cuellos de botella a través del 'Camino caliente'

  • Una vez que el resumen del perfil se haya cargado, cambiar la vista actual de llamadas en árbol
  • Haga clic en 'Expandir Ruta caliente' (botón con una icono de la llama)
  • Esto le mostrará el peor momento de consumir la función y la pila de llamadas que conducen a ella

Interpretación de los datos

  • la segunda columna de cifras ('Transc Exclusiva') que muestra el tiempo empleado en esta función particular (método etc) excluyendo las llamadas que hace a otras funciones.
  • La penúltima columna ('Número de llamadas') indica cuántas veces se llamó a esta función en particular.
  • Una combinación de estas dos columnas puede ser una gran pista sobre dónde se encuentra un cuello de botella.
  • Por ejemplo, es posible que encuentre un System.Linq.Queryable.La función [algo] ocupa una gran parte del tiempo total y se llama 10 o 100 veces ... De ser así, es posible que refinar el código para optimizarlo y reducir el número total de llamadas sea útil. ..
  • Recorrer el árbol le indicará qué función instigó las llamadas a esta función de cuello de botella y, a su vez, qué función llamó a esa función y así sucesivamente.

De esto, al menos debería ser capaz de identificar dónde están los cuellos de botella en el rendimiento y por qué están sucediendo. A menudo, el próximo desafío es encontrar una forma más refinada de lograr el mismo resultado con menos llamadas a funciones que consumen mucho tiempo, llamadas a bases de datos, operaciones de IO, etc.

Espero que esto ayude como iniciador para usted o otros que se encuentran con esta pregunta (común).