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