Namensräume
Varianten
Aktionen

std::chrono::high_resolution_clock

Von cppreference.com
< cpp‎ | chrono
 
 
Datums- und Zeitbibliothek
Zeitpunkt
(C++11)
(C++20)
Dauer
(C++11)
Uhren
(C++20)
(C++20)
(C++20)
high_resolution_clock
(C++11)
(C++20)
(C++20)
(C++20)
Tageszeit
(C++20)(C++20)
(C++20)(C++20)
(C++20)
Kalender
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)
chrono E/A
(C++20)

 
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

Systemuhrzeit von der systemweiten Echtzeituhr
(Klasse)
monotone Uhr, die niemals verstellt wird
(Klasse)

[editieren] Externe Links

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