Trong số các chức năng thời gian, time
, clock
getrusage
, clock_gettime
, gettimeofday
và timespec_get
, tôi muốn hiểu rõ cách thức chúng được thực hiện và giá trị trả về của họ là gì để biết trong đó tình hình tôi phải sử dụng chúng.Đo thời gian trong Linux - thời gian so với đồng hồ so với getrusage vs clock_gettime vs gettimeofday vs timespec_get?
Đầu tiên chúng ta cần phải phân loại chức năng trở tường đồng hồ giá trị so sánh với chức năng quay trở lại quá trình hoặc đề đánh giá cao. gettimeofday
trả về giá trị đồng hồ treo tường, clock_gettime
trả lại giá trị đồng hồ treo tường hoặc giá trị quy trình hoặc chủ đề tùy thuộc vào thông số Clock
được truyền cho nó. getrusage
và clock
giá trị quy trình trả lại.
Sau đó, câu hỏi thứ hai liên quan đến việc triển khai các chức năng này và kết quả là độ chính xác của chúng. Cơ chế phần cứng hoặc phần mềm nào sử dụng các chức năng này.
Có vẻ như getrusage
chỉ sử dụng dấu kiểm hạt nhân (thường dài 1ms) và hậu quả là không thể chính xác hơn so với ms. Đúng không? Sau đó, chức năng getimeofday
dường như sử dụng phần cứng cơ bản chính xác nhất hiện có. Kết quả là độ chính xác của nó thường là micro giây (không thể nhiều hơn vì API) trên phần cứng gần đây. Điều gì về clock
, trang người đàn ông nói về "xấp xỉ", nghĩa là gì? Điều gì về clock_gettime
, API là trong nano giây, nó có nghĩa là nó có thể rất chính xác nếu phần cứng cơ bản cho phép nó? Điều gì về tính đơn điệu?
Có chức năng nào khác không?
bây giờ bạn có 18 điểm đại diện ;-) –
Mac OS X không có 'clock_gettime', do đó việc sử dụng [ 'gettimeofday()'] (http://www.songho.ca/misc/timer/timer.html) linh hoạt hơn 'clock_gettime()' – bobobobo
@bobobobo Tôi đồng ý rằng OS X không có clock_gettime (), tuy nhiên gettimeofday() không may đo thời gian đồng hồ treo tường. Tôi đã cập nhật bài đăng của mình để cung cấp thông tin này. Nếu độ chính xác của ms là đủ, thì tôi khuyên bạn nên dùng getrusage() làm đồng hồ tốt nhất để sử dụng làm hẹn giờ. –