Mengapa waktu bash lebih tepat daripada waktu GNU?

12

Perintah buitin bash timememberikan ketepatan eksekusi milisecond dan GNU time(biasanya / usr / bin / time) memberikan ketepatan centisecond. The times(2)syscall memberikan kali dalam jam, dan 100 jam = 1 detik (biasanya), sehingga presisi adalah seperti GNU time. Jadi pertanyaannya adalah apa yang digunakan bash timesehingga lebih tepat?

Łukasz Sowa
sumber
Hmmm ... mereka berdua memberikan milidetik pada sistem saya ... (FC16)
nico
Aneh. Apa yang memberi Anda printf ("% d \ n", sysconf (_SC_CLK_TCK)); harus 100 seperti yang saya nyatakan di atas. Seseorang memiliki pengamatan serupa dengan saya: dirac.org/linux/time tetapi masih belum ada penjelasan.
Łukasz Sowa
ya, efeknya memberi 100 ...
nico
Maka saya tidak tahu kenapa begitu. Waktu GNU seharusnya menggunakan waktu syscall yang menggunakan sysconf (_SC_CLK_TCK) untuk mengonversi menjadi detik.
Łukasz Sowa
FWIW Ketika Anda mengatakan "bash time", saya menganggap maksud Anda BSD timeyang digunakan getrusage.
Dennis

Jawaban:

16

Setelah memeriksa beberapa kode hardcore bash saya menemukan bahwa bash timemenggunakan getrusage()dan timemenggunakan GNU times(). getrusage()jauh lebih tepat karena resolusi mikrodetik.

Łukasz Sowa
sumber