2009-09-28 15 views

risposta

6

StopWatch- funziona anche su sistemi che non supportano un contatore di prestazioni ad alta risoluzione e non è necessario alcun librerie esterne per usarlo.

L'altro lancia una Win32Exception se non vi è supporto per un contatore ad alta risoluzione.

18

Sono gli stessi quando si tratta di cronometraggio ad alta risoluzione.

Entrambi utilizzano questo:

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

e questo:

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

per fare la temporizzazione sottostante. (Puoi verificarlo con Reflector.NET). Userò StopWatch perché è già parte del framework (non c'è bisogno di collegare un'altra DLL) e ha caratteristiche migliori di HiPerfTimer.

+6

Sì, tuttavia lo StopWatch è effettivamente superiore perché ha un'opzione di fallback. HiPerfTimer genera una Win32Exception se un contatore ad alte prestazioni non è supportato. – RichardOD

+1

Sì, alla fine ho rinunciato a HiPerfTimer. L'articolo su CodeProject è un po 'inconsistente (ma l'idea era buona). Ho anche consigliato StopWatch, è più robusto e avrà un valore predefinito in caso di errore di QueryPerformanceFrequency, che è collegato alla IsHighResolution menzionata da Shay. – ParmesanCodice

Problemi correlati