2009-09-28 13 views

Respuesta

34

Stopwatch se basa en el temporizador de alta resolución (donde esté disponible), se puede comprobar que con IsHighResolution

6

StopWatch también funciona en sistemas que no son compatibles con un contador de rendimiento de alta resolución y no necesita ningún bibliotecas externas para usarlo.

El otro arroja una excepción Win32Exception si no hay soporte para un contador de alta resolución.

18

Son lo mismo cuando se trata de temporización de alta resolución.

Ambos usan esto:

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

y esto:

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

para hacer la sincronización subyacente. (Puede verificar esto con Reflector.NET). Usaría StopWatch porque ya es parte del framework (no es necesario vincular otro dll) y tenía mejores características que HiPerfTimer.

+6

Sí, sin embargo, el cronómetro es realmente superior porque tiene una opción de respaldo. El HiPerfTimer arroja una excepción Win32Exception si un contador de alto rendimiento no es compatible. – RichardOD

+1

Sí, finalmente me rendí en HiPerfTimer. El artículo sobre CodeProject es un poco endeble (pero la idea era buena). También recomendé StopWatch, es más robusto y tendrá un valor predeterminado cuando QueryPerformanceFrequency falle, que está vinculado a IsHighResolution mencionado por Shay. – ParmesanCodice