Maison >développement back-end >C++ >Comment QueryPerformanceCounter peut-il améliorer la précision de la minuterie et comment est-il utilisé ?

Comment QueryPerformanceCounter peut-il améliorer la précision de la minuterie et comment est-il utilisé ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-15 04:24:091054parcourir

How Can QueryPerformanceCounter Improve Timer Accuracy and How Is It Used?

Qu'est-ce que QueryPerformanceCounter et comment l'utiliser

Pour améliorer la précision du timing d'une classe Timer, QueryPerformanceCounter peut être une option fiable, en particulier lorsque vous recherchez une résolution en microsecondes.

Mise en œuvre QueryPerformanceCounter

Pour utiliser QueryPerformanceCounter, suivez ces étapes :

  1. Initialisez PCFreq :

    • Déterminez le fréquence du compteur de performance utilisant QueryPerformanceFrequency(&li).
    • Convertissez le résultat en double et divisez-le par 1000 pour obtenir la fréquence en microsecondes.
LARGE_INTEGER li;
if (!QueryPerformanceFrequency(&li))
    cout << "QueryPerformanceFrequency failed!\n";

PCFreq = double(li.QuadPart) / 1000.0;
  1. Démarrez le Counter :

    • Enregistrez le décompte initial à l'aide de QueryPerformanceCounter(&li).
    • Stockez ce décompte dans la variable CounterStart.
QueryPerformanceCounter(&li);
CounterStart = li.QuadPart;
  1. Obtenir l'heure Elapsed :

    • Appelez QueryPerformanceCounter(&li) pour obtenir le décompte actuel.
    • Calculez le temps écoulé en soustrayant le décompte de départ du décompte actuel et en divisant le résultat par PCFreq.
double GetCounter()
{
    QueryPerformanceCounter(&li);
    return double(li.QuadPart - CounterStart) / PCFreq;
}
  1. Exemple d'utilisation :
StartCounter();
Sleep(1000);
cout << GetCounter() << "\n"; // Output: approximately 1000

En ajustant la division de PCFreq vous pouvez contrôler l'unité de temps renvoyé :

  • Millisecondes : /1000,0
  • Secondes : /1,0
  • Microsecondes : /1000000,0

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn