|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
Defined in header <chrono> | ||
class high_resolution_clock; | (since C++11) | |
Classstd::chrono::high_resolution_clock represents the clock with the smallest tick period provided by the implementation. It may be an alias ofstd::chrono::system_clock orstd::chrono::steady_clock, or a third, independent clock.
std::chrono::high_resolution_clock meets the requirements ofTrivialClock.
Contents |
| Type | Definition |
rep | arithmetic type representing the number of ticks in the clock's duration |
period | astd::ratio type representing the tick period of the clock, in seconds |
duration | std::chrono::duration<rep, period> |
time_point | std::chrono::time_point<std::chrono::high_resolution_clock> |
constexpr bool is_steady [static] | true if the time between ticks is always constant, i.e. calls tonow() return values that increase monotonically even in case of some external clock adjustment, otherwisefalse (public static member constant) |
[static] | returns astd::chrono::time_point representing the current value of the clock (public static member function) |
There has been some controversy around the use ofhigh_resolution_clock. Howard Hinnant, who claims to have introducedhigh_resolution_clock to the language, stated in 2016 on theISO C++ Standard - Discussion mailing list that he was in favor of deprecating it. His rationale was that, because the standard allows for it to be an alias forstd::chrono::steady_clock orstd::chrono::system_clock, its use adds uncertainty to a program without benefit. However, other participants in the thread spoke out its favor, for instance on the basis that, because neitherstd::chrono::steady_clock norstd::chrono::system_clock come with any particular resolution guarantees,high_resolution_clock serves a useful role by giving the vendor an opportunity to supply the platform's highest-resolution clock, when neither itsstd::chrono::steady_clock nor itsstd::chrono::system_clock would be that.
It is often just an alias forstd::chrono::steady_clock orstd::chrono::system_clock, but which one it is depends on the library or configuration. When it is asystem_clock, it is not monotonic (e.g., the time can go backwards). For example, as of 2023, libstdc++ has it aliased tosystem_clock "until higher-than-nanosecond definitions become feasible"[1], MSVC has it assteady_clock[2], and libc++ usessteady_clock when the C++ standard library implementation supports a monotonic clock andsystem_clock otherwise[3].
(C++11) | wall clock time from the system-wide realtime clock (class) |
(C++11) | monotonic clock that will never be adjusted (class) |