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
Libérer: 2024-12-15 04:24:09
original
982 Les gens l'ont consulté

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;
Copier après la connexion
  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;
Copier après la connexion
  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;
}
Copier après la connexion
  1. Exemple d'utilisation :
StartCounter();
Sleep(1000);
cout << GetCounter() << "\n"; // Output: approximately 1000
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal