Estructura steady_clock
Representa un reloj que nunca se ajusta y que avanza a una velocidad uniforme.
Sintaxis
struct steady_clock;
Comentarios
Un objeto steady_clock
es un reloj monotónico, lo que significa que el tiempo que señala únicamente avanza. El valor devuelto por una llamada a now
siempre es menor o igual que el valor devuelto por la siguiente llamada a now
.
Un objeto steady_clock
garantiza que el tiempo entre tics es constante, con lo cual su uso es mejor para medir intervalos que un reloj del sistema. El reloj del sistema señala un tiempo de reloj. El problema de usar un tiempo de reloj para medir el tiempo transcurrido es que el tiempo de reloj podría alterarse mientras se mide un intervalo de tiempo. Podría modificarse por una sincronización con otro reloj a través de la red, por una transición al horario de verano, etc. steady_clock
no está sujeto a estos ajustes, por lo que constituye el método preferido para realizar un seguimiento del tiempo transcurrido.
high_resolution_clock
es definición de tipo para steady_clock
. En Windows, steady_clock
encapsula la función QueryPerformanceCounter
.
Ejemplo
#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 de tipo de conveniencia
Nombre | Descripción |
---|---|
steady_clock::duration |
En la implementación de Microsoft, es un sinónimo de nanoseconds , que se define como duration<long long, nano> . Representa una duración de tiempo medida en mil millonésimas de segundo. |
steady_clock::period |
En la implementación de Microsoft, es un sinónimo de nano , que se define como std::ratio<1i64, 1000000000i64> . Representa el tiempo en segundos (una mil millonésima de segundo) entre cada tic-tac de la duración. |
steady_clock::rep |
Sinónimo de long long , que es el tipo usado en la implementación de Microsoft para representar el número de tic-tacs de reloj en steady_clock::duration . |
steady_clock::time_point |
Sinónimo de time_point<steady_clock> . Se usa para representar un time_point para este reloj. |
Funciones públicas
Función | Descripción |
---|---|
now |
Devuelve la hora actual de steady_clock como un valor time_point . |
Constantes públicas
Nombre | Descripción |
---|---|
steady_clock::is_steady |
Contiene true . steady_clock es constante. Eso significa que puede usar este reloj para saber la hora antes de un evento, después de un evento y restarlas de forma confiable para obtener la duración del evento, pues el reloj no se ajusta durante ese tiempo. |
Requisitos
Encabezado: <chrono>
Espacio de nombres: std::chrono
Consulte también
<chrono>
file_clock class
high_resolution_clock
Estructura local_t
Estructura system_clock
Clase tai_clock
Clase utc_clock
Referencia de archivos de encabezado