Измерить время в Linux - время против часов против getrusage против clock_gettime против gettimeofday против timespec_get?
Среди функций синхронизации,time
clock
,,getrusage
clock_gettime
gettimeofday
а такжеtimespec_get
Я хочу четко понять, как они реализованы и каковы их возвращаемые значения, чтобы знать, в какой ситуации я должен их использовать.
Сначала нам нужно классифицировать функции, возвращающиенастенные часы сравнить с функциями, возвращающимизначения процесса или потоков.gettimeofday
возвращает значение настенных часов,clock_gettime
возвращает значение настенных часовили же значения процесса или потоков в зависимости отClock
параметр передан ему.getrusage
а такжеclock
вернуть значения процесса.
Тогда второй вопрос касается реализации этих функций и, как следствие, их точности. Какой аппаратный или программный механизм использует эти функции.
Кажется, чтоgetrusage
использует только тик ядра (обычно длиной 1 мс) и, как следствие, может 'Точнее, чем мс. Это правильно? Тогдаgetimeofday
Похоже, что функция использует самое точное из доступных аппаратных средств. Как следствие, его точность обычно составляет микросекунду (можетбыть больше из-за API) на новейшем оборудовании. Как насчетclock
Страница справочника "приближение», что это значит? Как насчетclock_gettime
, API в наносекунду, значит ли это, чтоможет быть настолько точным, если базовое оборудование позволяет это? Как насчет монотонности?
Есть ли другие функции?