Чому час bash є більш точним, ніж час GNU?


12

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


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

Дивно. Що дає вам printf ("% d \ n", sysconf (_SC_CLK_TCK)); повинно бути 100, як я вже говорив вище. Хтось має подібні спостереження до моїх: dirac.org/linux/time, але все ще немає пояснень.
Łukasz Sowa

так, насправді це дає 100 ...
nico

Тоді я поняття не маю, чому це. Час GNU повинен використовувати час syscall, який використовує sysconf (_SC_CLK_TCK) для перетворення в секунди.
Łukasz Sowa

FWIW Коли ви говорите "баш time", я припускаю, що ви маєте на увазі BSD timeяк використовується getrusage.
Денніс

Відповіді:


16

Після того, як деякі хардкор Баш код вивчення я дізнався, що Баш timeвикористовує getrusage()і GNU timeвикористання times(). getrusage()набагато точніше через мікросекундну роздільну здатність.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.