Почему время bash более точное, чем время GNU?


12

Команда buitin bash timeдает точность выполнения в миллисекундах, а GNU time(обычно / usr / bin / time) дает точность в несколько секунд. times(2)Системный вызов дает раз в часах, и 100 часов = 1 секунда (обычно), так что точность, как GNU time. Итак, вопрос в том, что использует bash, timeчтобы он был более точным?


Ммм ... они оба дают миллисекунды на моей системе ... (FC16)
Nico

Странный. Что дает вам printf ("% d \ n", sysconf (_SC_CLK_TCK)); должно быть 100, как я уже говорил выше. У кого-то есть наблюдения, подобные моим: dirac.org/linux/time, но объяснений нет.
Лукаш Сова

да, в действительности это дает 100 ...
Нико

Тогда я понятия не имею, почему это так. Предполагается, что время GNU использует времена syscall, которые используют sysconf (_SC_CLK_TCK) для преобразования в секунды.
Лукаш Сова

FWIW Когда вы говорите «bash time», я предполагаю, что вы имеете в виду BSD, timeкоторый использует getrusage.
Деннис

Ответы:


16

После некоторого изучения хардкорного кода bash я обнаружил, что bash timeиспользует getrusage()и timeиспользует GNU times(). getrusage()гораздо точнее из-за микросекундного разрешения.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.