Struct steady_clock
Rappresenta un orologio che non viene mai regolato e che si sposta in avanti a una velocità uniforme.
Sintassi
struct steady_clock;
Osservazioni:
Un steady_clock
è un orologio monotonico, il che significa che l'ora in cui segnala si sposta solo in avanti. Il valore restituito da una chiamata a now
è sempre minore o uguale al valore restituito dalla chiamata successiva a now
.
Un steady_clock
garantisce che il tempo tra i tick sia costante, rendendolo migliore per misurare gli intervalli rispetto all'uso di un orologio di sistema. L'orologio di sistema fornisce l'ora in tempo reale. Il problema relativo all'uso del tempo di clock a parete per misurare il tempo trascorso è che l'ora del tempo a muro può essere modificata durante la misurazione di un intervallo di tempo. Può essere modificato sincronizzando con un altro orologio in rete, da una transizione all'ora legale e così via. Un steady_clock
non è soggetto a queste modifiche, rendendo il modo preferito per tenere traccia del tempo trascorso.
high_resolution_clock
è un typedef per steady_clock
. In Windows esegue steady_clock
il wrapping della QueryPerformanceCounter
funzione.
Esempio
#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
Alias del tipo di praticità
Nome | Descrizione |
---|---|
steady_clock::duration |
Nell'implementazione di Microsoft è un sinonimo di nanoseconds , definito come duration<long long, nano> . Rappresenta una durata del tempo misurata in miliardi di secondi. |
steady_clock::period |
Nell'implementazione di Microsoft è un sinonimo di nano , definito come std::ratio<1i64, 1000000000i64> . Rappresenta il tempo in secondi (un miliardesimo di secondo) tra ogni tick nella durata. |
steady_clock::rep |
Sinonimo di long long , che è il tipo usato nell'implementazione di Microsoft per rappresentare il numero di tick di clock in un steady_clock::duration |
steady_clock::time_point |
Sinonimo di time_point<steady_clock> . Utilizzato per rappresentare un oggetto time_point per questo orologio. |
Funzioni pubbliche
Funzione | Descrizione |
---|---|
now |
Restituisce l'ora corrente da steady_clock come time_point valore. |
Costanti pubbliche
Nome | Descrizione |
---|---|
steady_clock::is_steady |
Contiene true . Un oggetto steady_clock è costante. Ciò significa che è possibile usare questo orologio per ottenere l'ora prima di un evento, l'ora dopo un evento e sottrarrli in modo affidabile per ottenere la durata dell'evento perché l'orologio non verrà regolato durante tale tempo. |
Requisiti
Intestazione: <chrono>
Spazio dei nomi: std::chrono
Vedi anche
<chrono>
file_clock class
high_resolution_clock
local_t
Struct
system_clock
Struct
Classe tai_clock
Classe utc_clock
Riferimento file di intestazione