Namespaces
Variants

std::chrono:: high_resolution_clock

From cppreference.net
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

Wanduhrzeit vom systemweiten Echtzeituhr
(Klasse)
Monotone Uhr, die nie angepasst wird
(Klasse)

Externe Links

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