std::chrono:: high_resolution_clock
|
|
Time point | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Duration | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Clocks | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time of day | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Calendar | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time zone | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chrono
I/O
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++20)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C-style date and time |
Member functions | ||||
Defined in header
<chrono>
|
||
class
high_resolution_clock
;
|
(since C++11) | |
Class
std::chrono::high_resolution_clock
represents the clock with the smallest tick period provided by the implementation. It may be an alias of
std::chrono::system_clock
or
std::chrono::steady_clock
, or a third, independent clock.
std::chrono::high_resolution_clock
meets the requirements of
TrivialClock
.
Member types
Type | Definition |
rep
|
arithmetic type representing the number of ticks in the clock's duration |
period
|
a std::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 > |
Member constants
constexpr bool
is_steady
[static]
|
true
if the time between ticks is always constant, i.e. calls to
now()
return values that increase monotonically even in case of some external clock adjustment, otherwise
false
(public static member constant) |
Member functions
[static]
|
returns a
std::chrono::time_point
representing the current value of the clock
(public static member function) |
Notes
There has been some controversy around the use of
high_resolution_clock
. Howard Hinnant, who claims to have introduced
high_resolution_clock
to the language, stated in 2016 on the
ISO 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 for
std::chrono::steady_clock
or
std::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 neither
std::chrono::steady_clock
nor
std::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 its
std::chrono::steady_clock
nor its
std::chrono::system_clock
would be that.
It is often just an alias for
std::chrono::steady_clock
or
std::chrono::system_clock
, but which one it is depends on the library or configuration. When it is a
system_clock
, it is not monotonic (e.g., the time can go backwards). For example, as of 2023, libstdc++ has it aliased to
system_clock
"until higher-than-nanosecond definitions become feasible"
[1]
, MSVC has it as
steady_clock
[2]
, and libc++ uses
steady_clock
when the C++ standard library implementation supports a monotonic clock and
system_clock
otherwise
[3]
.
See also
(C++11)
|
wall clock time from the system-wide realtime clock
(class) |
(C++11)
|
monotonic clock that will never be adjusted
(class) |