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 (постоянная публичная статическая переменная) |
Члены-функции
|
[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].
См. также
|
(C++11) | время стенных часов с системных часов реального времени (класс) |
|
(C++11) | монотонные часы, которые никогда не будут настраиваться (класс) |
Внешние ссылки
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/chrono/high_resolution_clock