es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué chrono::system_clock devuelve microsegundos mientras que clock_gettime devuelve nanosegundos?

std::chrono::system_clock::time_since_epoch().count() me da un resultado en microsegundos.

Quiero obtener la hora actual en nanosegundos. Pero no puedo usar high_resolution_clock porque en mi sistema es un alias en steady_clock (el reloj monotónico).

Sé que mi sistema es capaz de mostrar los nanosegundos, porque si uso clock_gettime(CLOCK_REALTIME, &ts) obtengo una hora de época correcta con resolución en nanosegundos.

¿Cómo puedo indicarle a std::chrono que use la resolución en nanosegundos? Me gustaría evitar usar clock_gettime y quedarme con el envoltorio de C++.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la hora actual en nanosegundos utilizando std::chrono, puedes usar el siguiente código:

    auto now = std::chrono::time_point_cast<std::chrono::nanoseconds>(std::chrono::system_clock::now()).time_since_epoch().count();

    Este código primero obtiene la hora actual utilizando system_clock::now(), luego hace un casting del punto de tiempo a nanosegundos utilizando time_point_cast, y finalmente obtiene el conteo del número de nanosegundos desde la época utilizando time_since_epoch().count().

    Esto te debería dar la hora actual en nanosegundos. Ten en cuenta que este método depende de la resolución del reloj del sistema y puede no ser tan preciso como utilizar clock_gettime(CLOCK_REALTIME, &ts). Sin embargo, si quieres mantenerte dentro de la biblioteca estándar de C++, esta es una buena opción.

Comments are closed.