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
|
(C++11)
|
hora del reloj de pared desde el reloj de tiempo real de todo el sistema
(clase) |
|
(C++11)
|
reloj monótono que nunca será ajustado
(clase) |