c# mvc-mini-profiler

c# - ¿Puedo usar mvc mini profiler en una aplicación de consola?



mvc-mini-profiler (3)

¡sí tu puedes! Y he creado un paquete NuGet para que sea aún más fácil ponerlo en funcionamiento.

Echa un vistazo a MiniProfiler.Windows: http://nootn.github.com/MiniProfiler.Windows/

También para un artículo detallado sobre cómo diseñar una buena aplicación de consola para crear perfiles: http://healthedev.blogspot.com.au/2012/07/performance-profiling-console-or-winwpf.html

¿Cómo puedo usar mvc-mini-profiler en una aplicación de consola C #?

También es curioso, ¿el mvc mini profiler pone las estadísticas reales perfiladas en el lado izquierdo de cada página web o es solo un código javascript personalizado hecho manualmente?

Descargué y ejecuté la muestra de mvc, y no puedo encontrar el código que coloca los resultados en esa ventana emergente de JavaScript.


El objeto de sincronización del núcleo (MiniProfiler) debería funcionar bien, al igual que los enlaces de conexión con perfil, etc .; sin embargo necesitarías

  • agrega tu propia interfaz de usuario para mostrar los resultados
  • defina su propio alcance / vida útil (para la web es fácil, solo la solicitud http)
  • proporcione sus propios enlaces de almacenamiento (hay una extensión de API para esto, que utiliza http-context por defecto IIRC)
  • Pase el generador de perfiles manualmente o defina una forma razonable de buscar la instancia del generador de perfiles actual

Sé que algunas personas han usado partes de WPF, etc., por lo que se puede usar, pero IMO podría tener sentido elegir solo los bits que tienen sentido, y usarlos para escribir una biblioteca personalizada que agregue algo impresionante.


MiniProfiler V4 (versión preliminar actual) tiene el método RenderPlainText() . Puede usarlo directamente en la consola o en una aplicación de servidor asíncrono multiproceso sin ninguna configuración adicional:

public void Foo() { MiniProfiler.Start("Interesting subroutine"); using (MiniProfiler.Current.Step("Step1")) { using (MiniProfiler.Current.Step(nameof(AccessDb))) { AccessDb(); } Thread.Sleep(100); } using (MiniProfiler.Current.Step("Step2")) { Thread.Sleep(100); } MiniProfiler.Stop(); Console.WriteLine(MiniProfiler.Current.RenderPlainText()); }

Este fragmento de código produce la siguiente salida:

Nombre de PC al 8/2/2017 8:44:36 AM
Subrutina interesante = 309.2ms
> Step1 = 204.8ms
>> AccessDb = 103.8ms (sql = 56.2ms en 2 cmds)
> Step2 = 100.9ms

Como puede ver, el resultado incluye un breve resumen de los tiempos personalizados (sql en este caso). Puede alterar fácilmente este comportamiento (por ejemplo, para incluir texto de comando) al proporcionar su propia versión de RenderPlainText() .

Para más información verifique: