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