Struct steady_clock

Representa um relógio que nunca é ajustado e que avança a uma taxa uniforme.

Sintaxe

struct steady_clock;

Comentários

Um steady_clock é um relógio monotônico, o que significa que o tempo que ele relata só avança. O valor retornado por uma chamada para now é sempre menor ou igual ao valor retornado pela próxima chamada para now.

Um steady_clock garante que o tempo entre tiques seja constante, tornando-o melhor para medir intervalos do que usar um relógio do sistema. O relógio do sistema fornece tempo de relógio de parede. O problema com o uso do tempo do relógio de parede para medir o tempo decorrido é que o tempo do relógio de parede pode ser modificado durante a medição de um intervalo de tempo. Ele pode ser modificado pela sincronização com outro relógio pela rede, por uma transição para o horário de verão e assim por diante. Um steady_clock não está sujeito a esses ajustes, sendo a maneira preferida de acompanhar o tempo decorrido.

high_resolution_clock é um typedef de steady_clock. No Windows, steady_clock encapsula a função QueryPerformanceCounter.

Exemplo

#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

Aliases de tipo de conveniência

Nome Descrição
steady_clock::duration Na implementação da Microsoft, ele é sinônimo de nanoseconds, que é definido como duration<long long, nano>. Representa uma duração do tempo medida em bilionésimos de segundo.
steady_clock::period Na implementação da Microsoft, ele é sinônimo de nano, que é definido como std::ratio<1i64, 1000000000i64>. Representa o tempo em segundos (um bilionésimo de segundo) entre cada tique na duração.
steady_clock::rep Um sinônimo de long long, que é o tipo usado na implementação da Microsoft para representar o número de tiques de relógio em um steady_clock::duration
steady_clock::time_point Um sinônimo de time_point<steady_clock>. Usado para representar um time_point para esse relógio.

Funções públicas

Função Descrição
now Retorna a hora atual do steady_clock como um valor de time_point.

Constantes públicas

Nome Descrição
steady_clock::is_steady Contém true. Um steady_clock é steady. Isso significa que você pode usar esse relógio para mediar o tempo antes de um evento, o tempo após um evento e subtraí-los confiavelmente para obter a duração do evento porque o relógio não será ajustado durante esse tempo.

Requisitos

Cabeçalho<chrono>:

Namespace:std::chrono

Confira também

<chrono>
file_clock class
high_resolution_clock
Structlocal_t
Structsystem_clock
tai_clock classe
utc_clock classe
Referência de Arquivos de Cabeçalho