Por experiencia personal, la System.Diagnostics.Stopwatch
clase se puede usar para medir el tiempo de ejecución de un método, sin embargo, CUIDADO : ¡No es del todo exacto!
Considere el siguiente ejemplo:
Stopwatch sw;
for(int index = 0; index < 10; index++)
{
sw = Stopwatch.StartNew();
DoSomething();
Console.WriteLine(sw.ElapsedMilliseconds);
}
sw.Stop();
Resultados de ejemplo
132ms
4ms
3ms
3ms
2ms
3ms
34ms
2ms
1ms
1ms
Ahora te preguntas; "Bueno, ¿por qué tardó 132 ms la primera vez, y significativamente menos el resto del tiempo?"
La respuesta es que Stopwatch
no compensa la actividad de "ruido de fondo" en .NET, como JITing. Por lo tanto, la primera vez que ejecuta su método, .NET JIT lo es primero. El tiempo que lleva hacer esto se agrega al tiempo de la ejecución. Igualmente, otros factores también harán que varíe el tiempo de ejecución.
¡Lo que realmente debería estar buscando con absoluta precisión es el perfil de rendimiento !
Echa un vistazo a lo siguiente:
RedGate ANTS Performance Profiler es un producto comercial, pero produce resultados muy precisos. - Aumente el rendimiento de sus aplicaciones con la creación de perfiles .NET
Aquí hay un artículo de StackOverflow sobre creación de perfiles: - ¿Cuáles son algunos buenos perfiles de .NET?
También he escrito un artículo sobre el Perfil de rendimiento usando el cronómetro que es posible que desee ver - Perfil de rendimiento en .NET
ThreadPool.QueueUserWorkItem(delegate { CopyFiles(folder, dest); });
interior, pero el cronómetro se detiene antes de que todo esté hecho.