Dari pengalaman pribadi, System.Diagnostics.Stopwatch
kelas dapat digunakan untuk mengukur waktu eksekusi suatu metode, namun, WASPADALAH : Itu tidak sepenuhnya akurat!
Perhatikan contoh berikut:
Stopwatch sw;
for(int index = 0; index < 10; index++)
{
sw = Stopwatch.StartNew();
DoSomething();
Console.WriteLine(sw.ElapsedMilliseconds);
}
sw.Stop();
Contoh hasil
132ms
4ms
3ms
3ms
2ms
3ms
34ms
2ms
1ms
1ms
Sekarang Anda bertanya-tanya; "Yah, mengapa perlu waktu 132ms pertama kali, dan secara signifikan lebih sedikit dari sisa waktu?"
Jawabannya adalah itu Stopwatch
tidak mengkompensasi aktivitas "latar belakang suara" di .NET, seperti JITing. Oleh karena itu saat pertama kali Anda menjalankan metode Anda, .NET JIT yang pertama. Waktu yang diperlukan untuk melakukan ini ditambahkan ke waktu eksekusi. Sama halnya, faktor-faktor lain juga akan menyebabkan waktu eksekusi berbeda-beda.
Yang benar-benar harus Anda cari adalah keakuratan absolut adalah Performance Profileing !
Lihatlah yang berikut ini:
RedGate ANTS Performance Profiler adalah produk komersial, tetapi menghasilkan hasil yang sangat akurat. - Tingkatkan kinerja aplikasi Anda dengan .NET profiling
Berikut ini adalah artikel StackOverflow tentang pembuatan profil: - What Are Some Good .NET Profiler?
Saya juga telah menulis artikel tentang Kinerja Profil menggunakan Stopwatch yang mungkin ingin Anda lihat - Profil kinerja di .NET
ThreadPool.QueueUserWorkItem(delegate { CopyFiles(folder, dest); });
dalam, tetapi stopwatch berhenti sebelum semuanya dilakukan.