2011-08-16 10 views
6

Al utilizar el mini perfilador, ¿significa esto que el código de producción se 'ensuciará' con el uso de bloques?Con el mini perfilador

using (profiler.Step("Set page title")) 
{ 
    ViewBag.Title = "Home Page"; 
} 

supongo que si es 1-off de pruebas que pude quitarlo, pero por lo general quieren mantener estos en el código base para el perfilado constante.

Respuesta

9

Eso es en realidad un mal ejemplo: normalmente no se perfilaría algo trivial.

En última instancia, es electiva lo que desea perfil. Hay un gancho para cosas como ADO.NET, pero si quieres que las cosas de perfil fuera de de esto, sí: tienes que echarle una mano.

Re "ensuciado", bueno, eso es subjetivo. Y el mejor enfoque es generalmente limitar la instrumentación a operaciones de muy alto nivel , y luego solo ampliar con operaciones más granulares como lo necesite (debido a un punto problemático identificado); por ejemplo, es posible que tenga:

... 
using(profiler.Step("Refresh customer")) 
{ 
    // ... 
} 
... 

y sólo cuando encuentre que la toma de 1800 ms acercar:

... 
using(profiler.Step("Refresh customer")) 
{ 
    using(profiler.Step("Query LDAP")) 
    { ... } 
    using(profiler.Step("Query primary customer DB")) 
    { ... } 
    using(profiler.Step("Query aux db")) 
    { ... } 
    using(profiler.Step("Print, scan, and OCR")) 
    { ... } 
} 
... 

También hay un método .Inline(...) de los comandos individuales.

Independientemente de si usted piensa que esto es "tirar basura":

  • destaca performance is a feature (y, de hecho, a menudo un requisito) - que está bien tener código para apoyar sus características! De hecho, se trata de una forma de evidencia de que tiene considerado (y medido) la realización de una nueva pieza/alterada del código
  • es completamente contextual forma granular lo haces
  • por lo tanto, proporciona un nivel significativo de detalles para el usuario - sin grandes cantidades de trivialidades en el registro, y sin la naturaleza invasiva del rendimiento de la mayoría de los registros
+0

Gracias, ¿cómo hiciste ese menú desplegable en cada página que muestra los resultados? se enganchó en el perfilador de alguna manera? es decir, ¿guardar cada sesión en el caché request.items? – codecompleting

+0

@codecompleting hay una API conectable para proporcionar almacenamiento a corto y largo plazo. Utiliza una tienda ASP.NET en memoria de forma predeterminada, IIRC, pero internamente usamos SQL-Server para largo plazo (es fácil escribir un complemento para esto). ¿Esa era la pregunta? –

+0

Quiero hacer algo como: http://community.mediabrowser.tv/uploads/site_1/2314/profiler.png. Curioso cómo se agregan todas las consultas para una solicitud determinada. usando request.items? – codecompleting

Cuestiones relacionadas