Dlaczego czas uderzenia jest bardziej precyzyjny niż czas GNU?


12

Komenda buitin bash timezapewnia milisekundową precyzję wykonania, a GNU time(zwykle / usr / bin / time) zapewnia precyzję w centisekundach. times(2)Syscall daje razy zegary i 100 zegary 1 sekundę (zazwyczaj), tak jak jest precyzja GNU time. Pytanie brzmi: co timeużywa bash, aby był bardziej precyzyjny?


Hmmm ... oba dają milisekundy w moim systemie ... (FC16)
nico

Dziwne. Co daje ci printf ("% d \ n", sysconf (_SC_CLK_TCK)); powinien wynosić 100, jak powiedziałem powyżej. Ktoś ma podobne obserwacje do mojej: dirac.org/linux/time, ale wciąż nie ma wyjaśnienia.
Łukasz Sowa,

tak, w efekcie daje 100 ...
nico

Więc nie mam pojęcia, dlaczego tak jest. Czas GNU ma wykorzystywać czasy syscall, które używają sysconf (_SC_CLK_TCK) do konwersji na sekundy.
Łukasz Sowa

FWIW Kiedy mówisz „bash time” Zakładam, że masz na myśli BSD timejak zastosowań getrusage.
Dennis

Odpowiedzi:


16

Po kilku kod Hardcore bash zbadaniu okazało się, że bash timezastosowań getrusage()oraz GNU timezastosowań times(). getrusage()jest znacznie bardziej precyzyjny ze względu na rozdzielczość mikrosekundową.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.