Perché il tempo bash è più preciso del tempo GNU?


12

Il comando buitin bash timefornisce una precisione di millisecondi dell'esecuzione e GNU time(di solito / usr / bin / time) fornisce una precisione di centisecondi. Il times(2)syscall fornisce i tempi in clock e 100 clock = 1 secondo (di solito), quindi la precisione è come GNU time. Quindi la domanda è cosa sta timeusando bash in modo che sia più preciso?


Hmmm ... danno entrambi millisecondi sul mio sistema ... (FC16)
nico

Strano. Cosa ti dà printf ("% d \ n", sysconf (_SC_CLK_TCK)); dovrebbe essere 100 come ho detto sopra. Qualcuno ha osservazioni simili alle mie: dirac.org/linux/time ma ancora nessuna spiegazione.
Łukasz Sowa,

sì, in effetti dà 100 ...
nico

Quindi non ho idea del perché. Il tempo GNU dovrebbe usare i tempi di syscall che usa sysconf (_SC_CLK_TCK) per convertire in secondi.
Łukasz Sowa,

FWIW Quando dici "bash time", suppongo che intendi BSD timecome quello usa getrusage.
Dennis,

Risposte:


16

Dopo aver esaminato il codice bash hardcore, ho scoperto che bash timeusa getrusage()e timeusa GNU times(). getrusage()è molto più preciso a causa della risoluzione dei microsecondi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.