std::chrono:: high_resolution_clock
|
Definiert im Header
<chrono>
|
||
|
class
high_resolution_clock
;
|
(seit C++11) | |
Die Klasse
std::chrono::high_resolution_clock
repräsentiert die Uhr mit der kleinsten Taktperiode, die von der Implementierung bereitgestellt wird. Sie kann ein Alias von
std::chrono::system_clock
oder
std::chrono::steady_clock
sein, oder eine dritte, unabhängige Uhr.
std::chrono::high_resolution_clock
erfüllt die Anforderungen eines
TrivialClock
.
Inhaltsverzeichnis |
Mitgliedertypen
| Typ | Definition |
rep
|
arithmetischer Typ, der die Anzahl der Ticks in der Dauer der Uhr darstellt |
period
|
ein std::ratio Typ, der die Tickperiode der Uhr in Sekunden darstellt |
duration
|
std:: chrono :: duration < rep, period > |
time_point
|
std:: chrono :: time_point < std :: chrono :: high_resolution_clock > |
Member-Konstanten
|
constexpr bool
is_steady
[static]
|
true
falls die Zeit zwischen den Ticks immer konstant ist, d.h. Aufrufe von
now()
Werte zurückgeben, die monoton steigen, selbst bei externen Taktjustierungen, andernfalls
false
(öffentliche statische Member-Konstante) |
Memberfunktionen
|
[static]
|
gibt einen
std::chrono::time_point
zurück, der den aktuellen Wert der Uhr repräsentiert
(öffentliche statische Member-Funktion) |
Hinweise
Es gab einige Kontroversen bezüglich der Verwendung von
high_resolution_clock
. Howard Hinnant, der behauptet,
high_resolution_clock
in die Sprache eingeführt zu haben, äußerte sich 2016 auf der
ISO C++ Standard - Discussion Mailingliste
dahingehend, dass er sich für eine Veraltung ausspreche. Seine Begründung war, dass, da der Standard erlaubt, dass es sich um einen Alias für
std::chrono::steady_clock
oder
std::chrono::system_clock
handeln kann, seine Verwendung dem Programm Unsicherheit hinzufügt, ohne einen Nutzen zu bieten. Andere Teilnehmer des Threads sprachen sich jedoch dafür aus, beispielsweise mit der Begründung, dass, da weder
std::chrono::steady_clock
noch
std::chrono::system_clock
mit bestimmten Auflösungsgarantien einhergehen,
high_resolution_clock
eine nützliche Rolle spielt, indem es dem Anbieter die Möglichkeit gibt, die höchstauflösende Uhr der Plattform bereitzustellen, wenn weder sein
std::chrono::steady_clock
noch sein
std::chrono::system_clock
dies wären.
Es handelt sich oft lediglich um einen Alias für
std::chrono::steady_clock
oder
std::chrono::system_clock
, aber welcher davon hängt von der Bibliothek oder Konfiguration ab. Wenn es sich um einen
system_clock
handelt, ist er nicht monoton (d.h. die Zeit kann rückwärts laufen). Beispielsweise ist er in libstdc++ ab 2023 als
system_clock
aliasiert, "bis Definitionen mit höherer Auflösung als Nanosekunden realisierbar werden"
[1]
, MSVC verwendet ihn als
steady_clock
[2]
, und libc++ nutzt
steady_clock
, wenn die C++-Standardbibliotheksimplementierung einen monotonen Takt unterstützt, andernfalls
system_clock
[3]
.
Siehe auch
|
(C++11)
|
Wanduhrzeit vom systemweiten Echtzeituhr
(Klasse) |
|
(C++11)
|
Monotone Uhr, die nie angepasst wird
(Klasse) |