Maison >développement back-end >C++ >Comment QueryPerformanceCounter peut-il obtenir une mesure précise du temps dans les applications Windows ?
Comment utiliser QueryPerformanceCounter pour une mesure précise du temps
QueryPerformanceCounter est une puissante fonction API Windows qui fournit des capacités de synchronisation de haute précision. Comprendre comment l'implémenter est crucial pour les applications nécessitant des mesures de temps précises, telles que les jeux et les outils de surveillance des performances.
Pour utiliser QueryPerformanceCounter, vous devez déclarer une variable LARGE_INTEGER, qui est un entier de 64 bits utilisé pour stocker valeurs temporelles. L'extrait de code suivant montre comment initialiser les variables :
LARGE_INTEGER li; double PCFreq;
La fonction StartCounter() initialise le compteur de performances en interrogeant le nombre de ticks actuel et en le stockant dans la variable CounterStart. Il calcule également la fréquence du compteur de performances, qui est utilisée pour convertir les ticks en secondes ou millisecondes.
void StartCounter() { if (!QueryPerformanceFrequency(&li)) { cout << "QueryPerformanceFrequency failed!\n"; } PCFreq = double(li.QuadPart) / 1000.0; QueryPerformanceCounter(&li); CounterStart = li.QuadPart; }
Pour récupérer le temps écoulé depuis le démarrage du compteur, utilisez la fonction GetCounter(). Il interroge le nombre de ticks actuel et en soustrait le nombre de ticks initial, renvoyant le temps écoulé sous forme de double.
double GetCounter() { QueryPerformanceCounter(&li); return double(li.QuadPart - CounterStart) / PCFreq; }
Le code fourni dans la réponse montre comment utiliser ces fonctions pour implémenter une minuterie simple qui affiche le temps écoulé après avoir dormi pendant une seconde.
En ajustant la valeur PCFreq, vous pouvez contrôler la précision de la minuterie. Le régler sur 1 000,0 vous donne une précision à la milliseconde, tandis que 1 000 000,0 fournit une précision à la microseconde.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!