steady_clock
-Struktur
Stellt eine Uhr dar, die niemals angepasst wird und sich mit einer einheitlichen Rate vorwärts bewegt.
Syntax
struct steady_clock;
Hinweise
A steady_clock
ist eine monotonische Uhr, was bedeutet, dass die Zeit, die er meldet, nur vorwärts bewegt. Der von einem Aufruf now
zurückgegebene Wert ist immer kleiner oder gleich dem Wert, der vom nächsten Aufruf now
zurückgegeben wird.
Eine steady_clock
stellt sicher, dass die Zeit zwischen Dencken konstant ist und es besser ist, Intervalle zu messen als eine Systemuhr zu verwenden. Die Systemuhr bietet Wanduhrzeit. Das Problem bei der Verwendung der Wanduhrzeit zum Messen der verstrichenen Zeit besteht darin, dass die Wanduhrzeit während der Messung eines Zeitintervalls geändert werden kann. Es könnte durch Synchronisierung mit einer anderen Uhr über das Netzwerk, durch einen Übergang zur Sommerzeit usw. geändert werden. A steady_clock
unterliegt diesen Anpassungen nicht, sodass sie die bevorzugte Möglichkeit ist, die verstrichene Zeit nachzuverfolgen.
high_resolution_clock
ist ein typedef für steady_clock
. Unter Windows steady_clock
wird die QueryPerformanceCounter
Funktion umbrochen.
Beispiel
#include <chrono>
#include <thread>
#include <iostream>
using namespace std::chrono;
int main()
{
auto begin = steady_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(1));
auto end = steady_clock::now();
std::cout << "Elapsed seconds: "
<< duration_cast<seconds>(end - begin).count()
<< "s\n";
std::cout << "Elapsed milliseconds: "
<< duration_cast<milliseconds>(end - begin).count()
<< "ms\n";
std::cout << "Elapsed microseconds: "
<< duration_cast<microseconds>(end - begin).count()
<< "us\n";
std::cout << "Elapsed nanoseconds: "
<< duration_cast<nanoseconds>(end - begin).count()
<< " ns\n";
return 0;
}
Elapsed seconds: 1s
Elapsed milliseconds: 1007ms
Elapsed microseconds: 1007266us
Elapsed nanoseconds: 1007266700 ns
Komforttypaliasen
Name | Beschreibung |
---|---|
steady_clock::duration |
In der Implementierung von Microsoft ist es ein Synonym für nanoseconds , das als duration<long long, nano> definiert ist. Es stellt eine Dauer der Zeit dar, die in Milliarden einer Sekunde gemessen wird. |
steady_clock::period |
In der Implementierung von Microsoft ist es ein Synonym für nano , das als std::ratio<1i64, 1000000000i64> definiert ist. Sie stellt die Zeit in Sekunden (ein Milliardenstel Sekunde) zwischen jedem Teilstrich in der Dauer dar. |
steady_clock::rep |
Ein Synonym für long long , das der Typ in der Microsoft-Implementierung verwendet wird, um die Anzahl der Taktstriche in einer steady_clock::duration |
steady_clock::time_point |
Ein Synonym für time_point<steady_clock> . Wird verwendet, um eine time_point für diese Uhr darzustellen. |
Öffentliche Funktionen
Funktion | Beschreibung |
---|---|
now |
Gibt die aktuelle Uhrzeit aus dem steady_clock Wert zurück time_point . |
Öffentliche Konstanten
Name | Beschreibung |
---|---|
steady_clock::is_steady |
Ist true . Eine steady_clock ist gleichmäßig. Das bedeutet, dass Sie diese Uhr verwenden können, um die Zeit vor einem Ereignis, die Zeit nach einem Ereignis abzurufen, und sie zuverlässig subtrahieren, um die Dauer des Ereignisses zu erhalten, da die Uhr während dieser Zeit nicht angepasst wird. |
Anforderungen
Header: <chrono>
Namespace:std::chrono
Siehe auch
<chrono>
file_clock class
high_resolution_clock
local_t
-Struktur
system_clock
-Struktur
tai_clock
-Klasse
utc_clock
-Klasse
Headerdateienreferenz