clock_realtime clock_gettime c++ c clock

c++ - clock_realtime - clock_gettime en c



Entendiendo los diferentes relojes de clock_gettime() (1)

Hola, quería usar la función clock_gettime() para medir el rendimiento de mi código.

No puedo entender la diferencia entre los diferentes tipos de relojes utilizados en la función de las descripciones de la página de manual. esp

CLOCK_REALTIME, CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID

¿Alguien puede explicar qué hace cada uno de estos relojes?


CLOCK_REALTIME informa la hora real del reloj de pared.

CLOCK_MONOTONIC es para medir el tiempo real relativo. Avanza a la misma velocidad que el flujo de tiempo real, pero no está sujeto a discontinuidades de los ajustes manuales o automáticos (NTP) del reloj del sistema.

CLOCK_PROCESS_CPUTIME_ID es para medir la cantidad de tiempo de CPU consumido por el proceso.

CLOCK_THREAD_CPUTIME_ID es para medir la cantidad de tiempo de CPU consumido por el hilo, pero no es compatible con Linux. glibc lo emula mal simplemente devolviendo la cantidad de tiempo de CPU consumido por el proceso desde el momento en que se creó el subproceso.

Actualización: Parece que los kernels modernos y glibc ahora admiten CLOCK_THREAD_CPUTIME_ID correctamente. No tengo los detalles sobre cuando fue arreglado.