Namespaces
Variants

std::chrono:: high_resolution_clock

From cppreference.net
std::chrono::high_resolution_clock
Definido en el encabezado <chrono>
class high_resolution_clock ;
(desde C++11)

La clase std::chrono::high_resolution_clock representa el reloj con el período de tic más pequeño proporcionado por la implementación. Puede ser un alias de std::chrono::system_clock o std::chrono::steady_clock , o un tercer reloj independiente.

std::chrono::high_resolution_clock cumple con los requisitos de TrivialClock .

Contenidos

Tipos de miembros

Tipo Definición
rep tipo aritmético que representa el número de ticks en la duración del reloj
period un tipo std::ratio que representa el período de tick del reloj, en segundos
duration std:: chrono :: duration < rep, period >
time_point std:: chrono :: time_point < std :: chrono :: high_resolution_clock >

Constantes de miembro

constexpr bool is_steady
[static]
true si el tiempo entre ticks es siempre constante, es decir, las llamadas a now() retornan valores que aumentan monótonamente incluso en caso de algún ajuste de reloj externo, de lo contrario false
(constante de miembro público estático)

Funciones miembro

[static]
devuelve un std::chrono::time_point que representa el valor actual del reloj
(función miembro pública estática)

Notas

Ha habido cierta controversia en torno al uso de high_resolution_clock . Howard Hinnant, quien afirma haber introducido high_resolution_clock en el lenguaje, declaró en 2016 en la lista de correo de Discusión del Estándar ISO C++ que estaba a favor de su desaprobación. Su razonamiento fue que, dado que el estándar permite que sea un alias de std::chrono::steady_clock o std::chrono::system_clock , su uso añade incertidumbre a un programa sin beneficio. Sin embargo, otros participantes en el hilo se pronunciaron a su favor, por ejemplo, sobre la base de que, dado que ni std::chrono::steady_clock ni std::chrono::system_clock vienen con garantías de resolución particulares, high_resolution_clock cumple un papel útil al dar al proveedor la oportunidad de suministrar el reloj de mayor resolución de la plataforma, cuando ni su std::chrono::steady_clock ni su std::chrono::system_clock serían ese.

A menudo es simplemente un alias para std::chrono::steady_clock o std::chrono::system_clock , pero cuál de ellos depende de la biblioteca o configuración. Cuando es un system_clock , no es monótono (por ejemplo, el tiempo puede retroceder). Por ejemplo, a partir de 2023, libstdc++ lo tiene como alias de system_clock "hasta que las definiciones superiores al nanosegundo sean factibles" [1] , MSVC lo tiene como steady_clock [2] , y libc++ utiliza steady_clock cuando la implementación de la biblioteca estándar de C++ admite un reloj monótono y system_clock en caso contrario [3] .

Véase también

hora del reloj de pared desde el reloj de tiempo real de todo el sistema
(clase)
reloj monótono que nunca será ajustado
(clase)

Enlaces externos

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