Từ N3376:
20.11.7.1 [time.clock.system] / 1:
Các đối tượng của lớp system_clockbiểu thị thời gian đồng hồ treo tường từ đồng hồ thời gian thực trên toàn hệ thống.
20.11.7.2 [time.clock.steady] / 1:
Các đối tượng của lớp steady_clockđại diện cho đồng hồ mà giá trị time_pointkhông bao giờ giảm khi thời gian vật lý tăng lên và giá trị nào củatime_point tăng trước với tốc độ ổn định so với thời gian thực. Có nghĩa là, đồng hồ có thể không được điều chỉnh.
20.11.7.3 [time.clock.hires] / 1:
Các đối tượng của lớp high_resolution_clockđại diện cho đồng hồ có chu kỳ tích tắc ngắn nhất. high_resolution_clockcó thể là một từ đồng nghĩa với system_clockhoặc steady_clock.
Ví dụ: đồng hồ toàn hệ thống có thể bị ảnh hưởng bởi một số thứ như thời gian tiết kiệm ánh sáng ban ngày, tại thời điểm này, thời gian thực tế được liệt kê tại một số thời điểm trong tương lai thực sự có thể là một thời điểm trong quá khứ. (Ví dụ: ở Hoa Kỳ, vào mùa thu, thời gian lùi lại một giờ, do đó, cùng một giờ được trải qua "hai lần") Tuy nhiên,steady_clock không được phép bị ảnh hưởng bởi những điều như vậy.
Một cách khác để nghĩ về "ổn định" trong trường hợp này là các yêu cầu được xác định trong bảng 20.11.3 [time.clock.req] / 2:
Trong Bảng 59 C1và C2biểu thị các loại đồng hồ. t1và t2là các giá trị được trả về bởi C1::now()nơi mà cuộc gọi trả về t1xảy ra trước khi cuộc gọi quay lại t2và cả hai cuộc gọi này đều xảy ra trước đó C1::time_point::max(). [Lưu ý: điều này có nghĩa là C1không quấn quanh giữa t1vàt2 . —Gửi ghi chú]
Biểu thức: C1::is_steady
Trả về: const bool
Ngữ nghĩa hoạt động: truenếu t1 <= t2luôn đúng và thời gian giữa các lần tích tắc đồng hồ là không đổi, ngược lại false.
Đó là tất cả những gì tiêu chuẩn có về sự khác biệt của chúng.
Nếu bạn muốn thực hiện đo điểm chuẩn, cách tốt nhất của bạn có lẽ sẽ là std::high_resolution_clockvì có khả năng nền tảng của bạn sử dụng bộ đếm thời gian có độ phân giải cao (ví dụ QueryPerformanceCountertrên Windows) cho đồng hồ này. Tuy nhiên, nếu bạn đang đo điểm chuẩn, bạn thực sự nên cân nhắc sử dụng bộ tính giờ dành riêng cho nền tảng cho điểm chuẩn của mình, vì các nền tảng khác nhau xử lý điều này khác nhau. Ví dụ: một số nền tảng có thể cung cấp cho bạn một số phương tiện để xác định số xung nhịp thực tế mà chương trình yêu cầu (độc lập với các quy trình khác chạy trên cùng một CPU). Tốt hơn, hãy chạm tay vào một hồ sơ cá nhân thực sự và sử dụng nó.