table of contents
        
      
      
    | std::chrono::high_resolution_clock(3) | C++ Standard Libary | std::chrono::high_resolution_clock(3) | 
NAME¶
std::chrono::high_resolution_clock - std::chrono::high_resolution_clock
Synopsis¶
 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¶
 Member 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¶
 true if the time between ticks is always constant, i.e.
  
   constexpr bool is_steady calls to now() return values that increase
    monotonically
  
   [static] even in case of some external clock adjustment, otherwise
  
   false
  
   (public static member constant)
Member functions¶
 now returns a std::chrono::time_point representing the current
    value of the
  
   [static] 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¶
 system_clock wall clock time from the system-wide realtime clock
  
   (C++11) (class)
  
   steady_clock monotonic clock that will never be adjusted
  
   (C++11) (class)
External links¶
 1. ↑ libstdc++ <chrono.h>
  
   2. ↑ msvc high_resolution_clock
  
   3. ↑ libc++ <high_resolution_clock.h>
| 2024.06.10 | http://cppreference.com |