2009-10-13 9 views

Répondre

3

clock

une fonction C++. Il renvoie le nombre cœurs CPU depuis le démarrage de l'application. Pour convertir cela en secondes, divisez-le par CLOCKS_PER_SEC.

GetTickCount

Une fonction API Win32. Renvoie le nombre de millisecondes depuis le démarrage du système.

QueryPerformanceCounter

Une fonction API Win32. Le compteur de performance est un compteur haute résolution qui augmente avec le temps. Pour convertir cela en secondes, divisez-le par QueryPerformanceFrequency.

7

Non, ils n'ont pas de précision en millisecondes. clock et GetTickCount ont entre 4 et 15 millisecondes de précision sur la plupart des systèmes. QueryPerformanceCounter a une précision de l'ordre de la microseconde à la nanoseconde.

clock est une enveloppe autour de GetTickCount si vous utilisez la bibliothèque d'exécution C de Microsoft, qui, si vous utilisez un compilateur MS, vous l'êtes probablement. GetTickCount renvoie une valeur en millisecondes, mais n'augmente pas d'une milliseconde après l'écoulement d'une milliseconde. Il n'est incrémenté que lorsqu'une interruption de l'horloge système se produit, soit toutes les quatre à 15 millisecondes - normalement elle est d'environ 15 ms, mais elle peut être modifiée par les applications. Cela affecte l'ensemble de l'ordinateur: il affecte la planification des threads, et le temps système des interruptions plus fréquentes laisse également moins de temps CPU pour exécuter le code du programme, donc ne le faites pas à moins que vous n'en ayez vraiment besoin. Si votre ordinateur est en train de cocher plus de 15 ms, une autre application a modifié la fréquence d'interruption du tick.

QueryPerformanceCounter utilise les minuteurs de haute résolution disponibles sur le système. Dans le passé, il était généralement basé sur le compte interne des cycles d'horloge du processeur, donc compterait à 2-3GHz, soit environ 0,5ns. Malheureusement, certains processeurs variaient le débit auquel le compteur se heurterait dans les états de faible puissance, et dans les systèmes multi-processeurs (c'est-à-dire avec plusieurs sockets de processeur) vous auriez des problèmes si les processeurs n'étaient pas tous à la même vitesse. Windows utilise maintenant d'autres sources plus fiables, mais leur résolution n'est pas aussi élevée que celle du processeur. QueryPerformanceFrequency vous indique combien de ticks se produisent en une seconde. Pour obtenir millisecondes, il faut multiplier la différence d'échantillons par 1000 QPC, et diviser par le résultat de QueryPerformanceFrequency.

Questions connexes