Tại sao thời gian bash chính xác hơn thời gian GNU?


12

Lệnh bash buitin timecho độ chính xác của milisecond khi thực thi và GNU time(thường là / usr / bin / time) cho độ chính xác centisecond. Tòa nhà times(2)chọc trời cho thời gian trong đồng hồ và 100 đồng hồ = 1 giây (thường), do đó độ chính xác giống như GNU time. Vì vậy, câu hỏi là bash timesử dụng là gì để nó chính xác hơn?


Hmmm ... cả hai đều cho một phần nghìn giây trên hệ thống của tôi ... (FC16)
nico

Lạ thật. Điều gì mang lại cho bạn printf ("% d \ n", sysconf (_SC_CLK_TCK)); nên là 100 như tôi đã nêu ở trên. Ai đó có những quan sát tương tự với tôi: dirac.org/linux/time nhưng vẫn không có lời giải thích.
Łukasz Sowa

vâng, thực tế, nó mang lại 100 ...
nico

Sau đó, tôi không biết tại sao đó. Thời gian GNU được cho là sử dụng thời gian syscall sử dụng sysconf (_SC_CLK_TCK) để chuyển đổi thành giây.
Łukasz Sowa

FWIW Khi bạn nói "bash time", tôi giả sử bạn có nghĩa là BSD timekhi sử dụng getrusage.
Dennis

Câu trả lời:


16

Sau khi kiểm tra mã bash Hardcore, tôi phát hiện ra rằng bash timesử dụng getrusage()và GNU timesử dụng times(). getrusage()chính xác hơn nhiều vì độ phân giải micro giây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.