hiện hữu Win32
trên hệ thống boost::date_time::microsec_clock()
là sử dụng thời gian
Được triển khai, nó chỉ cung cấp độ phân giải mili giây:Liên kết tới tài liệu
Có một số câu hỏi/câu trả lời trên Stackoverflow minh họa điều này và liên kết đến tài liệu, nhưng không giải thích tại sao lại như vậy:
Dường như có một số cách để đạt được độ phân giải micro giây trên Windows:
Điều tôi quan tâm là tại sao Boost lại triển khai theo cách này, trong khi đó có thể có giải pháp phù hợp hơn?
Truy vấnHiệu suấtBộ đếm
Không thể giúp bạn giải quyết vấn đề này. Nó cung cấp cho bạn dấu thời gian, nhưng vì bạn không biết bộ đếm bắt đầu khi nào nên không có cách nào đáng tin cậy để tính thời điểm tuyệt đối của nó. boost::date_time là một thời điểm (người dùng có thể hiểu được). Một điểm khác biệt nữa là bộ đếm như QueryPerformanceCounter cung cấp cho bạn bộ đếm thời gian tăng đều đặn, trong khi thời gian hệ thống có thể bị ảnh hưởng bởi người dùng và do đó có thể tăng vọt. Vì vậy, hai thứ này dành cho các trường hợp sử dụng khác nhau. Một cái được sử dụng để thể hiện thời gian thực và cái còn lại được sử dụng để có được thời gian và điểm chuẩn chính xác trong phần mềm.
GetSystemTimePreciseAsFileTime
Có vẻ như đáp ứng được yêu cầu về độ phân giải cao về thời gian tuyệt đối. Tôi đoán nó không được sử dụng vì nó yêu cầu Windows8.
Tôi là một lập trình viên xuất sắc, rất giỏi!