2009-09-28 55 views

回答

6

StopWatch-它也適用於不支持高分辨率性能計數器系統,你不需要任何外部庫使用它。

如果不支持高分辨率計數器,另一個引發Win32Exception。

18

它們與高分辨率時序相同。

兩者都使用這樣的:

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

和此:

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

做下層定時。 (你可以用Reflector.NET驗證這一點)。我會使用StopWatch,因爲它已經是框架的一部分了(不需要鏈接另一個dll),它比HiPerfTimer有更好的功能。

+6

是的 - 但是StopWatch實際上更好,因爲它有一個後備選項。如果高性能計數器不受支持,則HiPerfTimer將引發Win32Exception。 – RichardOD 2009-09-28 07:46:01

+1

是的,我最終放棄了HiPerfTimer。 CodeProject上的文章有點脆弱(但這個想法很好)。我還推薦StopWatch,它更強大,並且在QueryPerformanceFrequency失敗時會有一個默認值,這與Shay提到的IsHighResolution有關。 – ParmesanCodice 2009-09-28 07:50:49