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?


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.