Структура steady_clock
Представляет часы, которые никогда не корректируются и перемещаются вперед по единой скорости.
Синтаксис
struct steady_clock;
Замечания
Это steady_clock
монотонные часы, что означает, что время, которое он сообщает только вперед. Значение, возвращаемое вызовом now
, всегда меньше или равно значению, возвращаемого следующим вызовом now
.
Гарантирует steady_clock
, что время между галками является константой, что делает его лучше для измерения интервалов, чем с помощью системных часов. Системные часы предоставляют время настенные часы. Проблема с использованием времени настенных часов для измерения истекшего времени заключается в том, что время настенных часов может быть изменено при измерении интервала времени. Его можно изменить путем синхронизации с другими часами по сети, переходом на летнее время и т. д. A steady_clock
не подлежит этим корректировкам, что делает его предпочтительным способом отслеживать истекшее время.
high_resolution_clock
— типdef для steady_clock
. В Windows steady_clock
упаковывает функцию QueryPerformanceCounter
.
Пример
#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
Псевдонимы удобных типов
Имя | Описание |
---|---|
steady_clock::duration |
В реализации Корпорации Майкрософт это синоним, который nanoseconds определяется как duration<long long, nano> . Он представляет длительность времени, измеряемого в миллиардах секунд. |
steady_clock::period |
В реализации Корпорации Майкрософт это синоним, который nano определяется как std::ratio<1i64, 1000000000i64> . Он представляет время в секундах (один миллиард секунд) между каждым тиком в течение длительности. |
steady_clock::rep |
Синоним , long long который является типом, используемым в реализации Майкрософт для представления числа часов в steady_clock::duration |
steady_clock::time_point |
Синоним для time_point<steady_clock> . Используется для представления time_point часов. |
Открытые функции
Function | Description |
---|---|
now |
Возвращает текущее время из steady_clock time_point значения. |
Общедоступные константы
Имя | Описание |
---|---|
steady_clock::is_steady |
Содержит true . Объект steady_clock — постоянный. Это означает, что вы можете использовать эти часы, чтобы получить время до события, время после события и надежно вычитать их, чтобы получить длительность события, так как часы не будут скорректированы в течение этого времени. |
Требования
Заголовок: <chrono>
Пространство имен: std::chrono
См. также
<chrono>
file_clock class
high_resolution_clock
Структура local_t
Структура system_clock
Класс tai_clock
Класс utc_clock
Справочник по файлам заголовков