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
|
(C++11)
|
horloge murale provenant de l'horloge temps réel système
(classe) |
|
(C++11)
|
horloge monotone qui ne sera jamais ajustée
(classe) |