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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.