Pourquoi le temps bash est plus précis que le temps GNU?

12

La commande buitin bash timedonne une précision d'exécution en millisecondes et GNU time(généralement / usr / bin / time) donne une précision en centisecondes. L' times(2)appel système donne des temps en horloges, et 100 horloges = 1 seconde (généralement), donc la précision est comme GNU time. La question est donc de savoir ce que bash timeutilise pour que ce soit plus précis?

Łukasz Sowa
la source
Hmmm ... ils donnent tous les deux des millisecondes sur mon système ... (FC16)
nico
Étrange. Ce qui vous donne printf ("% d \ n", sysconf (_SC_CLK_TCK)); devrait être 100 comme je l'ai indiqué ci-dessus. Quelqu'un a des observations similaires aux miennes: dirac.org/linux/time mais toujours aucune explication.
Łukasz Sowa
oui, en effet ça donne 100 ...
nico
Alors je n'ai aucune idée pourquoi. Le temps GNU est censé utiliser le temps syscall qui utilise sysconf (_SC_CLK_TCK) pour convertir en secondes.
Łukasz Sowa,
FWIW Quand vous dites "bash time", je suppose que vous voulez dire BSD timecomme cela utilise getrusage.
Dennis

Réponses:

16

Après un certain code bash hardcore examen j'ai découvert que bash timeutilisations getrusage()et GNU timeutilisations times(). getrusage()est beaucoup plus précis en raison de la résolution en microsecondes.

Łukasz Sowa
la source