Il est utile de pousser votre code d'évaluation dans une classe/méthode utilitaire. Le site StopWatch
n'a pas besoin d'être Disposed
ou Stopped
sur erreur. Ainsi, le code le plus simple pour temps un peu de action es
public partial class With
{
public static long Benchmark(Action action)
{
var stopwatch = Stopwatch.StartNew();
action();
stopwatch.Stop();
return stopwatch.ElapsedMilliseconds;
}
}
Exemple de code d'appel
public void Execute(Action action)
{
var time = With.Benchmark(action);
log.DebugFormat(“Did action in {0} ms.”, time);
}
Voici la version de la méthode d'extension
public static class Extensions
{
public static long Benchmark(this Action action)
{
return With.Benchmark(action);
}
}
Et un exemple de code d'appel
public void Execute(Action action)
{
var time = action.Benchmark()
log.DebugFormat(“Did action in {0} ms.”, time);
}
0 votes
À propos, si vous ne cherchez pas quelque chose de rapide et sale, vous pouvez utiliser des compteurs de performance.
1 votes
Si vous avez besoin d'une plus grande précision, utilisez Stopwatch.GetTimestamp, sinon la réponse est bonne.
0 votes
@dbasnett Pouvez-vous donner plus de détails dans une réponse ?
0 votes
Dans l'exemple ci-dessus, changez les heures de début et de fin en long et attribuez-leur Stopwatch.GetTimestamp au lieu de DateTime.Now. Le temps pris est (end-start)/Stopwatch.Frequency.
0 votes
Voir aussi : Les arguments contre DateTime.Now
0 votes
Chaque fois que vous utilisez DateTime.Now, demandez si vous ne devriez pas utiliser DateTime.UtcNow à la place. Ceci étant dit, Chronomètre est la bonne solution.
2 votes
Le terme "meilleur" est subjectif. Cette question doit définir ce que l'on entend par "meilleur" de manière objective.