J'ai une page asp.net normale contenant du code dont je veux mesurer le temps d'exécution. J'ai créé une classe d'aide très basique à cette fin:Mesure du temps dans la page ASP.NET
public class Timing
{
private long m_ticksBefore;
private long m_ticksAfter;
public void Before()
{
m_ticksBefore = DateTime.Now.Ticks;
}
public void After()
{
m_ticksAfter = DateTime.Now.Ticks;
}
public void TraceTime(string note)
{
TimeSpan span = new TimeSpan(m_ticksAfter - m_ticksBefore);
System.Diagnostics.Trace.Write(string.Format("\n...Timing for {0}...\nTicks: \t{1}\nMilliseconds: \t{2}\nSeconds: \t{3}\n..................", note, span.Ticks, span.TotalMilliseconds, span.TotalSeconds));
}
}
J'instancier un nouvel objet de synchronisation et enveloppez le code que je veux suivre avec le Avant() et après des méthodes et enfin appeler la méthode TraceTime() dans afin de sortir le résultat dans la fenêtre de sortie de l'IDE. La chose étrange est que la première requête à la page aboutit à un résultat attendu d'environ 40 millisecondes, mais l'actualisation de la page (F5) me donne 0 ticks de temps d'exécution. Même exécuter la page avec de nouveaux paramètres forçant l'exécution de code différente dans la zone surveillée révèle un appartement 0.
Si je System.Diagnostics.StopWatch à la place j'obtenir des résultats beaucoup plus réalistes
Stopwatch watch1 = Stopwatch.StartNew();
//Some code to monitor
watch1.Stop();
System.Diagnostics.Trace.Write(watch1.ElapsedTicks);
À moi le code semble très similaire et je n'arrive pas à trouver pourquoi la première approche ne produit pas de résultats réalistes ...
Il semble y avoir une sorte de problème d'optimisation qui est effectué derrière la scène, mais je ne suis pas vraiment trouver. Peut-être est-ce dû à mon problème de timing personnel, c'est-à-dire au problème du coucher ...
Le problème est que le même codage prend 40ms dans une situation et 0 dans l'autre ... bien sûr, le code étant mesure peut réagir différemment dans un scénario de postback, mais il n'a pas mentionné. –
Mon point est que cela ne prend pas réellement 0ms. C'est toujours une chute, mais ~ 40ms à <10ms est beaucoup plus plausible que ~ 40ms à 0ms. – stevemegson
Je vois .. c'est vrai. –