Pregunta

Tengo varios clientes en los que mi aplicación WinForms no funciona tan bien como en otros clientes. Uso el dotTrace de JetBrain aquí en la oficina, pero eso no me ayuda a encontrar cuellos de botella en las máquinas de nuestros clientes. ¿Cómo puedo perfilar el rendimiento de una aplicación .NET ya implementada para un cliente? ¿Hay alguna herramienta de creación de perfiles con un componente redistribuible que me permita producir resultados de creación de perfiles que no se puedan usar hasta que traiga los resultados (una instantánea en dotTrace) a la herramienta de creación de perfiles completa?

Actualización: Dado que NProf es de distribución gratuita, Estoy pensando en implementarlo en la estación de trabajo de un cliente. Informaré los resultados aquí.

¿Fue útil?

Solución

No estoy familiarizado con dotTrace, pero he utilizado las herramientas de creación de perfiles y instrumentación de Visual Studio 2008 en el contexto de Visual Studio y creo que están distribuidas con .NET 3.5 SDK.

La herramienta VSInstr.exe: http://msdn.microsoft.com/en-us/library/ms182402. aspx Instrumentará el binario desplegado.

VSPerfCmd: http://msdn.microsoft.com/en-us/library/ms182403. aspx puede capturar los datos de rendimiento de la aplicación instrumentada.

Nunca lo he hecho directamente y únicamente desde la línea de comandos, así que no puedo ofrecerte mucha ayuda allí, pero al menos pensé que esta era otra opción para ti.

Otros consejos

Por lo tanto, creo que lo que podría estar necesitando es algún método para medir el tiempo de implementación del anuncio. Por muy ingratas que sean, podría considerar agregar Contadores de rendimiento a su aplicación. Consulte System.Diagnostics . He utilizado el extenso para monitorear las aplicaciones en la implementación. He encontrado que los perfiladores aunque impresionantes a veces ocultan ciertos problemas debido a su sobrecarga. Por ejemplo, si su aplicación llega a una base de datos y el disco es lento, las consultas tardan más, lo que podría no ser evidente en un generador de perfiles, ya que la aplicación se ejecutará más lentamente en general.

Para el lado del cliente, si su aplicación no requiere acceso administrativo en la instalación, podría hacer que los contadores de rendimiento formen parte de un modo de diagnóstico de diagnóstico. ya que instalarlos requiere acceso de administrador. Desearía colocar contadores de rendimiento para medir cosas como la duración de las llamadas a la base de datos y al servicio, el tamaño de las estructuras de datos que pueden crecer y la cantidad de fallas que ocurren.

Ya sabemos que su código funciona, ya que en ciertas configuraciones de clientes funciona bien. Así que piense en agregar instrumentación a su aplicación. Es uno de esos elementos no atractivos de la apuesta por escribir software confiable como un buen registro. No es divertido pero en mi opinión hay que hacerlo. A menudo, es lo único que le da visibilidad de lo que su aplicación está haciendo en la implementación. La aplicación actual en la que estoy trabajando pasó de aproximadamente 20 contadores de rendimiento en la Rev 1 a aproximadamente 150 en la Rev 2. No monitoreo la mayoría de ellos todo el tiempo, pero para alertarme sobre los problemas de rendimiento y confiabilidad, han valido la pena. .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top