Kişisel deneyimden, System.Diagnostics.Stopwatch
sınıf bir yöntemin yürütme süresini ölçmek için kullanılabilir, ancak DİKKAT : Tamamen doğru değildir!
Aşağıdaki örneği düşünün:
Stopwatch sw;
for(int index = 0; index < 10; index++)
{
sw = Stopwatch.StartNew();
DoSomething();
Console.WriteLine(sw.ElapsedMilliseconds);
}
sw.Stop();
Örnek sonuçlar
132ms
4ms
3ms
3ms
2ms
3ms
34ms
2ms
1ms
1ms
Şimdi merak ediyorsunuz; "Peki neden ilk seferinde 132 ms sürdü ve geri kalan süre önemli ölçüde daha az?"
Cevap, Stopwatch
JITing gibi .NET'te "arka plan gürültüsü" etkinliğini telafi etmemesidir. Bu nedenle, yönteminizi ilk kez çalıştırdığınızda, .NET JIT ilk önce. Bunu yapmak için gereken süre, yürütme zamanına eklenir. Aynı şekilde, diğer faktörler de yürütme süresinin değişmesine neden olacaktır.
Mutlak doğruluk için aradığınız şey Performans Profili Oluşturma !
Aşağıdakilere bir göz atın:
RedGate ANTS Performance Profiler ticari bir üründür, ancak çok doğru sonuçlar verir. - .NET profili oluşturma ile uygulamalarınızın performansını artırın
İşte profilleme üzerine bir StackOverflow makalesi: - Bazı İyi .NET Profilers nelerdir?
Ayrıca bakmak isteyebileceğiniz Kronometre kullanarak Performans Profili Oluşturma hakkında bir makale yazdım - .NET'te performans profili oluşturma
ThreadPool.QueueUserWorkItem(delegate { CopyFiles(folder, dest); });
iç, ancak her şey yapılmadan önce kronometre durur bir foreach döngü var .