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.
Trước tiên, chúng ta cần phân loại các hàm trả về giá trị đồng hồ treo tường so với các hàm trả về giá trị của tiến trình hoặc luồng . gettimeofday
trả về giá trị đồng hồ treo tường, clock_gettime
trả về giá trị đồng hồ treo tường hoặc giá trị xử lý hoặc luồng tùy thuộc vào Clock
tham số được truyền cho nó. getrusage
và clock
trả về các giá trị quá trình.
Sau đó, câu hỏi thứ hai liên quan đến việc thực hiện các chức năng này và kết quả là tính chính xác của chúng. Nhữ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 tick kernel (thường dài 1ms) và kết quả là không thể chính xác hơn ms. Đúng không? Sau đó, getimeofday
chức năng dường như sử dụng phần cứng cơ bản chính xác nhất có sẵn. Do đó, độ chính xác của nó thường là micro giây (không thể nhiều hơn do API) trên phần cứng gần đây. Thế còn clock
, trang người đàn ông nói về "xấp xỉ", nó có nghĩa là gì? Thế còn clock_gettime
, API tính bằng nano giây, điều đó có nghĩa là nó có thể chính xác đến vậy nếu phần cứng cơ bản cho phép nó? Còn sự đơn điệu thì sao?
Có chức năng nào khác không?
clock_gettime
, do đó việc sử dụnggettimeofday()
linh hoạt hơn một chút so vớiclock_gettime()