¿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?


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.