Par expérience personnelle, la System.Diagnostics.Stopwatch
classe peut être utilisée pour mesurer le temps d'exécution d'une méthode, cependant ATTENTION : elle n'est pas tout à fait exacte!
Prenons l'exemple suivant:
Stopwatch sw;
for(int index = 0; index < 10; index++)
{
sw = Stopwatch.StartNew();
DoSomething();
Console.WriteLine(sw.ElapsedMilliseconds);
}
sw.Stop();
Exemples de résultats
132ms
4ms
3ms
3ms
2ms
3ms
34ms
2ms
1ms
1ms
Vous vous demandez maintenant; "eh bien pourquoi a-t-il fallu 132 ms la première fois, et nettement moins le reste du temps?"
La réponse est que Stopwatch
cela ne compense pas l'activité de «bruit de fond» dans .NET, comme JITing. Par conséquent, la première fois que vous exécutez votre méthode, .NET JIT est la première. Le temps nécessaire pour ce faire s'ajoute au temps de l'exécution. De même, d'autres facteurs feront également varier le temps d'exécution.
Ce que vous devriez vraiment rechercher pour une précision absolue, c'est le profilage des performances !
Jetez un œil à ce qui suit:
RedGate ANTS Performance Profiler est un produit commercial, mais produit des résultats très précis. - Boostez les performances de vos applications avec le profilage .NET
Voici un article StackOverflow sur le profilage: - Quels sont les bons profileurs .NET?
J'ai également écrit un article sur le profilage des performances à l'aide du chronomètre que vous voudrez peut-être consulter - Profilage des performances dans .NET
ThreadPool.QueueUserWorkItem(delegate { CopyFiles(folder, dest); });
intérieur, mais le chronomètre s'arrête avant que tout ne soit fait.