Estoy tratando de medir el tiempo que lleva ejecutar un fragmento de código en mi servidor de producción. Me gustaría monitorear esta información en tiempo real, así que decidí dar un vistazo a Performance Analyzer. Entiendo por MSDN que necesito crear un contador de rendimiento AverageTimer32 y un contador de rendimiento AverageBase, que tendré debidamente. Incremento el contador en mi programa, y puedo ver que el CallCount sube y baja, pero el AverageTime siempre es cero. ¿Qué estoy haciendo mal?¿Cómo uso PerformanceCounterType AverageTimer32?
Aquí hay una snippit de código:
long init_call_time = Environment.TickCount;
// ***
// Lots and lots of code...
// ***
// Count number of calls
PerformanceCounter perf =
new PerformanceCounter("Cat", "CallCount", "Instance", false);
perf.Increment();
perf.Close();
// Count execution time
PerformanceCounter perf2 =
new PerformanceCounter("Cat", "CallTime", "Instance", false);
perf2.NextValue();
perf2.IncrementBy(Environment.TickCount - init_call_time);
perf2.Close();
// Average base for execution time
PerformanceCounter perf3 =
new PerformanceCounter("Cat", "CallTimeBase", "Instance", false);
perf3.Increment();
perf3.Close();
perf2.NextValue();
>> usted debe tratar de mantener las instancias globales ¿Cómo sugieren hacer esto en una aplicación web? ¿Debo agregar algún código a Application_Start para crear instancias de los contadores y almacenarlos en una variable de aplicación? –
El tiempo promedio de ejecución es de aproximadamente 1.5 segundos - 3 segundos dependiendo, así que supongo que es lo suficientemente largo para Environment.TickCount, sin embargo, voy a probar el cronómetro. –