std::chrono::high_resolution_clock
| Definiert in 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 für 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 an eine TrivialClock.
Inhalt |
[editieren] Member-Typen
| Typ | Definition |
rep
|
arithmetischer Typ, der die Anzahl der Ticks in der Dauer der Uhr repräsentiert |
period
|
ein std::ratio-Typ, der die Tick-Periode der Uhr in Sekunden repräsentiert |
duration
|
std::chrono::duration<rep, period> |
time_point
|
std::chrono::time_point<std::chrono::high_resolution_clock> |
[editieren] Member-Konstanten
| constexpr bool is_steady [static] |
true, wenn die Zeit zwischen Ticks immer konstant ist, d.h. Aufrufe von now() Werte zurückgeben, die auch bei externen Takt-Anpassungen monoton steigen, andernfalls false (öffentliche statische Member-Konstante) |
[editieren] Member-Funktionen
| [static] |
gibt einen std::chrono::time_point zurück, der den aktuellen Wert der Uhr repräsentiert (öffentliche statische Memberfunktion) |
[editieren] Anmerkungen
Es gab einige Kontroversen um die Verwendung von high_resolution_clock. Howard Hinnant, der behauptet, high_resolution_clock in die Sprache eingeführt zu haben, erklärte 2016 in der ISO C++ Standard - Discussion mailing list, dass er für deren Deprezierung sei. Seine Begründung war, dass, da der Standard es erlaubt, dass es ein Alias für std::chrono::steady_clock oder std::chrono::system_clock ist, seine Verwendung Unsicherheit in einem Programm ohne Nutzen hinzufügt. Andere Teilnehmer des Threads sprachen sich jedoch für sie aus, beispielsweise auf der Grundlage, dass, da weder std::chrono::steady_clock noch std::chrono::system_clock bestimmte Auflösungsgarantien bieten, high_resolution_clock eine nützliche Rolle spielt, indem sie dem Anbieter die Möglichkeit gibt, die Uhr mit der höchsten Auflösung der Plattform bereitzustellen, wenn weder seine std::chrono::steady_clock noch seine std::chrono::system_clock dies tun würden.
Sie ist oft nur ein Alias für std::chrono::steady_clock oder std::chrono::system_clock, aber welche es ist, hängt von der Bibliothek oder Konfiguration ab. Wenn sie eine system_clock ist, ist sie nicht monoton (z.B. kann die Zeit rückwärts laufen). Zum Beispiel hat libstdc++ sie Stand 2023 als Alias für system_clock "bis höhere Auflösungen als Nanosekunden möglich werden"[1], MSVC hat sie als steady_clock[2] und libc++ verwendet steady_clock, wenn die C++ Standardbibliothek-Implementierung eine monotone Uhr unterstützt, und andernfalls system_clock[3].
[editieren] Siehe auch
| (C++11) |
Systemuhrzeit von der systemweiten Echtzeituhr (Klasse) |
| (C++11) |
monotone Uhr, die niemals verstellt wird (Klasse) |