Partager via


struct steady_clock

Représente une horloge qui n’est jamais ajustée et qui avance à un rythme uniforme.

Syntaxe

struct steady_clock;

Notes

Il steady_clock s’agit d’une horloge monotonique, ce qui signifie que le temps qu’il signale n’avance que vers l’avant. La valeur retournée par un appel à now est toujours inférieure ou égale à la valeur retournée par l’appel suivant à now.

Cela steady_clock garantit que le temps entre les cycles est constant, ce qui le rend mieux pour mesurer les intervalles que l’utilisation d’une horloge système. L’horloge système fournit l’heure du mur. Le problème lié à l’utilisation de l’horloge murale pour mesurer le temps écoulé est que l’heure de l’horloge murale peut être modifiée lors de la mesure d’un intervalle de temps. Il peut être modifié en synchronisant avec une autre horloge sur le réseau, par une transition vers l’heure d’été, et ainsi de suite. Un steady_clock n’est pas soumis à ces ajustements, ce qui en fait le moyen préféré de suivre le temps écoulé.

high_resolution_clock est un typedef pour steady_clock. Sur Windows, steady_clock encapsule la QueryPerformanceCounter fonction.

Exemple

#include <chrono> 
#include <thread>
#include <iostream>

using namespace std::chrono;

int main()
{
    auto begin = steady_clock::now();
    std::this_thread::sleep_for(std::chrono::seconds(1));
    auto end = steady_clock::now();
    
    std::cout << "Elapsed seconds:      "
        << duration_cast<seconds>(end - begin).count()
        << "s\n";

    std::cout << "Elapsed milliseconds: "
        << duration_cast<milliseconds>(end - begin).count()
        << "ms\n";

    std::cout << "Elapsed microseconds: "
        << duration_cast<microseconds>(end - begin).count()
        << "us\n";

    std::cout << "Elapsed nanoseconds:  "
        << duration_cast<nanoseconds>(end - begin).count()
        << " ns\n";

    return 0;
}
Elapsed seconds:      1s
Elapsed milliseconds: 1007ms
Elapsed microseconds: 1007266us
Elapsed nanoseconds:  1007266700 ns

Alias de type pratique

Nom Description
steady_clock::duration Dans l’implémentation de Microsoft, il s’agit d’un synonyme pour nanoseconds, qui est défini comme duration<long long, nano>. Il représente une durée mesurée en milliards de secondes.
steady_clock::period Dans l’implémentation de Microsoft, il s’agit d’un synonyme pour nano, qui est défini comme std::ratio<1i64, 1000000000i64> . Il représente le temps en secondes (un milliardième de seconde) entre chaque graduation dans la durée.
steady_clock::rep Synonyme de long long, qui est le type utilisé dans l’implémentation Microsoft pour représenter le nombre de cycles d’horloge dans un steady_clock::duration
steady_clock::time_point Synonyme de time_point<steady_clock>. Utilisé pour représenter une time_point horloge.

Fonctions publiques

Fonction Description
now Retourne l’heure actuelle à partir de la steady_clock valeur.time_point

Constantes publiques

Nom Description
steady_clock::is_steady Contient true. Un steady_clock est steady. Cela signifie que vous pouvez utiliser cette horloge pour obtenir l’heure avant un événement, l’heure après un événement et les soustraire de manière fiable pour obtenir la durée de l’événement, car l’horloge ne sera pas ajustée pendant cette heure.

Spécifications

En-tête<chrono>:

Espace de noms :std::chrono

Voir aussi

<chrono>
file_clock class
high_resolution_clock
Struct local_t
Struct system_clock
tai_clock, classe
utc_clock, classe
Informations de référence sur les fichiers d’en-tête