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?


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.