2009-09-28 12 views

Répondre

6

StopWatch- cela fonctionne aussi sur les systèmes qui ne prennent pas en charge un compteur de performance à haute résolution et vous n'avez pas besoin bibliothèques externes pour l'utiliser.

L'autre lève une exception Win32Exception s'il n'y a pas de support pour un compteur haute résolution.

18

Ils sont identiques en ce qui concerne la synchronisation haute résolution.

Les deux utilisent ceci:

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

et ceci:

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

à faire le moment sous-jacent. (Vous pouvez vérifier cela avec Reflector.NET). J'utiliserais StopWatch car il fait déjà partie du framework (pas besoin de lier une autre DLL) et il avait de meilleures fonctionnalités que HiPerfTimer.

+6

Oui- cependant le StopWatch est réellement supérieur car il a une option de repli. HiPerfTimer lève une exception Win32Exception si un compteur haute performance n'est pas pris en charge. – RichardOD

+1

Oui, j'ai finalement abandonné HiPerfTimer. L'article sur CodeProject est un peu fragile (mais l'idée était bonne). J'ai également recommandé StopWatch, il est plus robuste et aura une valeur par défaut lorsque QueryPerformanceFrequency échoue, ce qui est lié à la IsHighResolution mentionnée par Shay. – ParmesanCodice