¿Por qué el tiempo bash es más preciso que el tiempo GNU?

12

El comando buitin bash timeproporciona una precisión de ejecución de milisegundos y GNU time(generalmente / usr / bin / time) proporciona una precisión de centisegundos. El times(2)syscall da tiempos en relojes, y 100 relojes = 1 segundo (generalmente), por lo que la precisión es como GNU time. Entonces, la pregunta es ¿qué está timeusando bash para que sea más preciso?

Łukasz Sowa
fuente
Hmmm ... ambos dan milisegundos en mi sistema ... (FC16)
nico
Extraño. Lo que le da printf ("% d \ n", sysconf (_SC_CLK_TCK)); debería ser 100 como dije anteriormente. Alguien tiene observaciones similares a las mías: dirac.org/linux/time pero aún no hay explicación.
Łukasz Sowa
sí, en efecto da 100 ...
nico
Entonces no tengo idea de por qué. Se supone que el tiempo GNU usa times syscall que usa sysconf (_SC_CLK_TCK) para convertir a segundos.
Łukasz Sowa
FWIW Cuando dices "bash time", supongo que te refieres a BSD timecomo se usa getrusage.
Dennis

Respuestas:

16

Después de un cierto código de hardcore fiesta examen descubrí que bash timeusos getrusage()y GNU timeusos times(). getrusage()es mucho más preciso debido a la resolución de microsegundos.

Łukasz Sowa
fuente