Sto provando a misurare il tempo necessario per eseguire un pezzo di codice sul mio server di produzione. Mi piacerebbe monitorare queste informazioni in tempo reale, quindi ho deciso di dare a Performance Analyzer un mago. Capisco da MSDN che ho bisogno di creare un contatore di prestazioni AverageTimer32 e AverageBase, che ho debitamente avuto. Incremento il contatore nel mio programma, e posso vedere il CallCount andare su e giù, ma il tempo medio è sempre zero. Che cosa sto facendo di sbagliato?Come utilizzare PerformanceCounterType AverageTimer32?
Ecco uno snippit di codice:
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();
>> si dovrebbe cercare di mantenere le istanze globali Come ti suggerisco di fare questo in un'applicazione web? Dovrei forse aggiungere del codice a Application_Start per istanziare i contatori e memorizzarli in una variabile Application? –
Il tempo di esecuzione medio è di circa 1,5 secondi - 3 secondi a seconda, quindi presumo che sia abbastanza lungo per Environment.TickCount, tuttavia proverò il cronometro. –