Spec-Zone.ru › C++

std::chrono::high_resolution_clock

Определено в заголовке <chrono>
class high_resolution_clock;
(с C++11)

Класс std::chrono::high_resolution_clock представляет собой часы с наименьшим периодом тика, предоставляемым реализацией. Он может быть алиасом std::chrono::system_clock или std::chrono::steady_clock, или третьими независимыми часами.

std::chrono::high_resolution_clock соответствует требованиям TrivialClock.

Типы членов

Тип члена Определение
rep арифметический тип, представляющий количество тиков в продолжительности часов
period тип std::ratio, представляющий период тика часов в секундах
duration std::chrono::duration<rep, period>
time_point std::chrono::time_point<std::chrono::high_resolution_clock>

Постоянные члены

constexpr bool is_steady
[static]
true , если время между тиками всегда постоянно, т.е. вызовы now() возвращают значения, монотонно увеличивающиеся даже при некоторых внешних корректировках часов, иначе false
(постоянная публичная статическая переменная)

Члены-функции

now
[static]
возвращает std::chrono::time_point, представляющую текущее значение часов
(публичная статическая функция-член)

Примечания

Возникли некоторые разногласия относительно использования high_resolution_clock. Говард Хиннант, который утверждает, что ввел high_resolution_clock в язык, заявил в 2016 году на списке рассылки обсуждений стандарта ISO C++, что он выступал за его устаревание. Его обоснование заключалось в том, что, поскольку стандарт допускает, что он может быть алиасом для std::chrono::steady_clock или std::chrono::system_clock, его использование добавляет неопределенность в программу без пользы. Тем не менее, другие участники обсуждения высказались в его поддержку, например, на том основании, что, поскольку ни std::chrono::steady_clock, ни std::chrono::system_clock не предоставляют каких-либо гарантий разрешения, high_resolution_clock играет полезную роль, предоставляя поставщику возможность предоставить часы с самым высоким разрешением платформы, когда ни ее std::chrono::steady_clock, ни ее std::chrono::system_clock не будут такими.

Зачастую это просто псевдоним std::chrono::steady_clock или std::chrono::system_clock, но какой именно зависит от библиотеки или конфигурации. Когда это system_clock, оно не является монотонным (например, время может идти вспять). Например, по состоянию на 2023 год, libstdc++ имеет его как алиас system_clock «до тех пор, пока определения с разрешением выше наносекунд не станут осуществимыми»[1], MSVC имеет его как steady_clock[2], а libc++ использует steady_clock, когда реализация стандартной библиотеки C++ поддерживает монотонные часы, и system_clock в противном случае[3].

См. также

system_clock
(C++11)
время стенных часов с системных часов реального времени
(класс)
steady_clock
(C++11)
монотонные часы, которые никогда не будут настраиваться
(класс)

Внешние ссылки

  1. libstdc++ <chrono.h>
  2. msvc high_resolution_clock
  3. libc++ <high_resolution_clock.h>

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/chrono/high_resolution_clock

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API