Поделиться через


Структура 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
Справочник по файлам заголовков