Измерить время в Linux - время против часов против getrusage против clock_gettime против gettimeofday против timespec_get?

Среди функций синхронизации,time, clock getrusage, clock_gettime, gettimeofday а такжеtimespec_getЯ хочу четко понять, как они реализованы и каковы их возвращаемые значения, чтобы знать, в какой ситуации я должен их использовать.

Сначала нам нужно классифицировать функции, возвращающиеwall-clock values сравнить с функциями, возвращающимиprocess or threads values. gettimeofday возвращает значение настенных часов,clock_gettime возвращает значение настенных часовor значения процесса или потоков в зависимости отClock параметр передан ему.getrusage а такжеclock вернуть значения процесса.

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

Кажется, чтоgetrusage использует только тик ядра (обычно длиной 1 мс) и, как следствие, не может быть более точным, чем мс. Это правильно? Тогдаgetimeofday Похоже, что функция использует наиболее точное доступное оборудование. Как следствие, его точность обычно равна микросекунде (не может быть больше из-за API) на новейшем оборудовании. Как насчетclockстраница руководства говорит о «приближении», что это значит? Как насчетclock_gettimeAPI находится в наносекунде, означает ли это, что он может быть настолько точным, если базовое оборудование позволяет это? Как насчет монотонности?

Есть ли другие функции?

Ответы на вопрос(2)

Ваш ответ на вопрос