Подтвердить что ты не робот

Понимание различных часов clock_gettime()

Привет, я хотел использовать функцию clock_gettime() для измерения производительности моего кода.

Я не могу понять разницу между различными типами часов, используемых в функции, из описаний справочной страницы. esp

CLOCK_REALTIME,

CLOCK_PROCESS_CPUTIME_ID

CLOCK_THREAD_CPUTIME_ID

Может ли кто-нибудь объяснить, что делают каждый из этих часов?

4b9b3361

Ответ 1

CLOCK_REALTIME сообщает о фактическом времени настенных часов.

CLOCK_MONOTONIC предназначен для измерения относительного реального времени. Он продвигается с той же скоростью, что и фактический поток времени, но не подвержен прерываниям от ручной или автоматической (NTP) регулировки системных часов.

CLOCK_PROCESS_CPUTIME_ID предназначен для измерения количества процессорного времени, потребляемого процессом.

CLOCK_THREAD_CPUTIME_ID предназначен для измерения количества процессорного времени, потребляемого потоком, но не поддерживается Linux. glibc имитирует это плохо, просто возвращая количество процессорного времени, затрачиваемого процессом с момента создания потока.

Обновление: Кажется, что современные ядра и glibc теперь поддерживают CLOCK_THREAD_CPUTIME_ID правильно. У меня нет информации о том, когда она была исправлена.