Warum ist die Bash-Zeit genauer als die GNU-Zeit?

12

Der Befehl buitin bash timegibt die Ausführungsgenauigkeit in Millisekunden an, und GNU time(normalerweise / usr / bin / time) gibt die Genauigkeit in Zentisekunden an. Der times(2)Syscall gibt die Zeiten in Uhren und 100 Uhren = 1 Sekunde (normalerweise) an, die Genauigkeit ist also wie bei GNU time. Die Frage ist also, was Bash timeverwendet, damit es präziser ist.

Łukasz Sowa
quelle
Hmmm ... beide geben Millisekunden auf meinem System an ... (FC16)
nico
Seltsam. Was gibt Ihnen printf ("% d \ n", sysconf (_SC_CLK_TCK)); sollte 100 sein, wie ich oben angegeben habe. Jemand hat ähnliche Beobachtungen wie ich : dirac.org/linux/time, aber immer noch keine Erklärung.
Łukasz Sowa
Ja, in der Tat gibt es 100 ...
Nico
Dann habe ich keine Ahnung warum. Die GNU-Zeit soll times syscall verwenden, die sysconf (_SC_CLK_TCK) verwendet, um in Sekunden zu konvertieren.
Łukasz Sowa
FWIW Wenn Sie „bash sagen time“, ich nehme an, Sie Mittelwert BSD timewie die Anwendungen getrusage.
Dennis

Antworten:

16

Nachdem einige hardcore bash Code Prüfung fand ich , dass bash out timeAnwendungen getrusage()und GNU timeAnwendungen times(). getrusage()ist aufgrund der Mikrosekundenauflösung weitaus genauer.

Łukasz Sowa
quelle