Namespaces
Variants

std::chrono:: high_resolution_clock

From cppreference.net
std::chrono::high_resolution_clock
Défini dans l'en-tête <chrono>
class high_resolution_clock ;
(depuis C++11)

La classe std::chrono::high_resolution_clock représente l'horloge avec la plus petite période de tic fournie par l'implémentation. Elle peut être un alias de std::chrono::system_clock ou std::chrono::steady_clock , ou une troisième horloge indépendante.

std::chrono::high_resolution_clock satisfait aux exigences de TrivialClock .

Table des matières

Types membres

Type Définition
rep type arithmétique représentant le nombre de ticks dans la durée de l'horloge
period un std::ratio représentant la période de tick de l'horloge, en secondes
duration std:: chrono :: duration < rep, period >
time_point std:: chrono :: time_point < std :: chrono :: high_resolution_clock >

Constantes membres

constexpr bool is_steady
[static]
true si le temps entre les ticks est toujours constant, c'est-à-dire que les appels à now() renvoient des valeurs qui augmentent de manière monotone même en cas d'ajustement de l'horloge externe, sinon false
(constante membre statique publique)

Fonctions membres

[static]
retourne un std::chrono::time_point représentant la valeur actuelle de l'horloge
(fonction membre publique statique)

Notes

Il y a eu une certaine controverse autour de l'utilisation de high_resolution_clock . Howard Hinnant, qui affirme avoir introduit high_resolution_clock dans le langage, a déclaré en 2016 sur la liste de discussion ISO C++ Standard - Discussion qu'il était en faveur de sa dépréciation. Son raisonnement était que, comme la norme permet qu'il soit un alias de std::chrono::steady_clock ou de std::chrono::system_clock , son utilisation ajoute de l'incertitude à un programme sans bénéfice. Cependant, d'autres participants au fil de discussion ont exprimé leur soutien, par exemple sur la base que, comme ni std::chrono::steady_clock ni std::chrono::system_clock ne sont accompagnés de garanties de résolution particulières, high_resolution_clock joue un rôle utile en donnant au fournisseur l'opportunité de fournir l'horloge de plus haute résolution de la plateforme, lorsque ni son std::chrono::steady_clock ni son std::chrono::system_clock ne le seraient.

Il s'agit souvent simplement d'un alias pour std::chrono::steady_clock ou std::chrono::system_clock , mais le choix dépend de la bibliothèque ou de la configuration. Lorsqu'il s'agit d'un system_clock , il n'est pas monotone (par exemple, le temps peut reculer). Par exemple, en 2023, libstdc++ l'a aliasé sur system_clock "jusqu'à ce que des définitions plus précises que la nanoseconde deviennent réalisables" [1] , MSVC l'utilise comme steady_clock [2] , et libc++ utilise steady_clock lorsque l'implémentation de la bibliothèque standard C++ prend en charge une horloge monotone et system_clock dans le cas contraire [3] .

Voir aussi

horloge murale provenant de l'horloge temps réel système
(classe)
horloge monotone qui ne sera jamais ajustée
(classe)

Liens externes

  1. libstdc++ <chrono.h>
  2. MSVC high_resolution_clock
  3. libc++ <high_resolution_clock.h>