Por que o tempo do bash é mais preciso que o tempo do GNU?


12

O comando buitin bash timefornece precisão de execução em milissegundos e o GNU time(geralmente / usr / bin / time) fornece precisão em centissegundos. O times(2)syscall fornece tempos em relógios e 100 relógios = 1 segundo (geralmente), portanto a precisão é semelhante ao GNU time. Portanto, a questão é o que o bash está timeusando, para que seja mais preciso?


Hmmm ... eles ambos milissegundos dão sobre o meu sistema ... (FC16)
nico

Estranho. O que fornece a você printf ("% d \ n", sysconf (_SC_CLK_TCK)); deve ser 100, como afirmei acima. Alguém tem observações semelhantes às minhas: dirac.org/linux/time, mas ainda não há explicação.
Asukasz Sowa

sim, na verdade ele dá 100 ...
nico

Então não tenho ideia do porquê disso. O tempo do GNU deve usar times syscall, que usa o sysconf (_SC_CLK_TCK) para converter em segundos.
Łukasz Sowa

FWIW Quando você diz "bash time", suponho que você queira dizer BSD timecomo ele usa getrusage.
Dennis3 de

Respostas:


16

Depois de algum código de hardcore festa examinando eu descobri que o bash timeusos getrusage()e GNU timeusos times(). getrusage()é muito mais preciso por causa da resolução de microssegundos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.