J'essaye de mesurer le temps qu'il faut pour exécuter un morceau de code sur mon serveur de production. J'aimerais surveiller cette information en temps réel, j'ai donc décidé de donner un coup de fouet à Performance Analyzer. Je comprends de MSDN que j'ai besoin de créer à la fois un compteur de performance AverageTimer32 et un AverageBase, que j'ai dûment. J'incrémente le compteur dans mon programme, et je peux voir le CallCount monter et descendre, mais le AverageTime est toujours zéro. Qu'est-ce que je fais mal?Comment utiliser PerformanceCounterType AverageTimer32?
Voici un snippit de code:
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();
>> vous devriez essayer de garder les instances mondiales Comment proposeriez-vous le faire dans une application web? Devrais-je ajouter du code à Application_Start pour instancier les compteurs et les stocker dans une variable Application? –
Le temps d'exécution moyen est d'environ 1,5 secondes - 3 secondes selon, donc je suppose que c'est assez long pour Environment.TickCount, mais je vais essayer le chronomètre. –