Серед тимчасових функцій, 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()