Серед тимчасових функцій, time
, clock
getrusage
, clock_gettime
, gettimeofday
і timespec_get
я хочу , щоб чітко зрозуміти , як вони реалізуються , і які їхні повернені значення для того , щоб знати , в якій ситуації я повинен використовувати їх.
Спочатку нам потрібно класифікувати функції, що повертають значення настінного годинника, порівняти з функціями, що повертають значення або значення потоку . gettimeofday
повертає значення настінного годинника, clock_gettime
повертає значення настінного годинника або значення процесу чи потоку залежно від Clock
параметра, переданого йому. getrusage
і clock
повертати значення процесу.
Тоді друге питання стосується реалізації цих функцій і, як наслідок, їх точності. Який апаратний чи програмний механізм використовує ці функції.
Здається, що getrusage
використовується лише галочка ядра (зазвичай довжиною 1 мс) і, як наслідок, не може бути більш точним, ніж мс. Це право? Тоді getimeofday
функція, здається, використовує найточніше наявне обладнання. Як наслідок, його точність зазвичай є мікросекундою (не може бути більше через API) на останніх апаратних засобах. Про що clock
, сторінка man говорить про "наближення", що це означає? А як щодо того clock_gettime
, API знаходиться в наносекунді, чи це означає, що він може бути таким точним, якщо базове обладнання дозволяє це? А як щодо монотонності?
Чи є якісь інші функції?
clock_gettime
, отже, використанняgettimeofday()
трохи більш універсальне, ніжclock_gettime()