2009-09-28 16 views

cevap

6

StopWatch- ile aynı zamanda yüksek çözünürlüklü performans sayacı desteklemeyen sistemlerde çalıştığını kontrol edebilir ve herhangi bir ihtiyacım yok kullanmak için harici kütüphaneler.

Yüksek çözünürlüklü bir sayaç için destek yoksa, diğeri bir Win32Exception atar.

18

Yüksek çözünürlüklü zamanlama söz konusu olduğunda bunlar aynıdır.

[DllImport("Kernel32.dll")] 
private static extern bool QueryPerformanceFrequency(out long Frequency); 

yatan zamanlamayı yapmak:

[DllImport("Kernel32.dll")] 
private static extern bool QueryPerformanceCounter(out long PerformanceCount); 

ve bu:

Hem bunu kullanın. (Bunu Reflector.NET ile doğrulayabilirsiniz). StopWatch'i kullanıyorum çünkü zaten çerçevenin bir parçası (başka bir dll'ye bağlamaya gerek yok) ve HiPerfTimer'den daha iyi özelliklere sahipti.

+6

Evet - ancak StopWatch aslında bir geri dönüş seçeneği olduğu için daha üstündür. Yüksek performanslı bir sayaç desteklenmezse, HiPerfTimer bir Win32Exception atar. – RichardOD

+1

Evet, sonunda HiPerfTimer'den vazgeçtim. CodeProject ile ilgili makale biraz çürük (ama fikir iyiydi). Ayrıca StopWatch'i tavsiye ediyorum, daha sağlam ve Shay tarafından belirtilen IsHighResolution'a bağlı QueryPerformanceFrequency başarısız olduğunda bir varsayılan değere sahip olacak. – ParmesanCodice