จาก N3376:
20.11.7.1 [time.clock.system] / 1:
วัตถุของคลาสsystem_clockแสดงเวลานาฬิกาแขวนจากนาฬิกาเรียลไทม์ทั้งระบบ
20.11.7.2 [time.clock.steady] / 1:
ออบเจ็กต์ของคลาสsteady_clockแสดงถึงนาฬิกาที่ค่าtime_pointไม่เคยลดลงเมื่อเวลาทางกายภาพก้าวหน้าขึ้นและค่าใดtime_pointล่วงหน้าในอัตราคงที่เมื่อเทียบกับเวลาจริง นั่นคืออาจไม่มีการปรับนาฬิกา
20.11.7.3 [time.clock.hires] / 1:
ออบเจ็กต์ของคลาสhigh_resolution_clockเป็นตัวแทนของนาฬิกาที่มีช่วงเวลาขีดสั้นที่สุด high_resolution_clockอาจจะเป็นคำพ้องหาหรือsystem_clocksteady_clock
ตัวอย่างเช่นนาฬิกากว้างของระบบอาจได้รับผลกระทบจากบางอย่างเช่นเวลาออมแสงซึ่งเวลาจริงที่ระบุไว้ในอนาคตอาจเป็นเวลาในอดีตก็ได้ (เช่นในสหรัฐอเมริกาในเวลาฤดูใบไม้ร่วงจะเลื่อนกลับไปหนึ่งชั่วโมงดังนั้นชั่วโมงเดียวกันจึงมีประสบการณ์ "สองครั้ง") อย่างไรก็ตามsteady_clockไม่อนุญาตให้ได้รับผลกระทบจากสิ่งดังกล่าว
อีกวิธีหนึ่งในการคิดเกี่ยวกับ "คงที่" ในกรณีนี้อยู่ในข้อกำหนดที่กำหนดไว้ในตาราง 20.11.3 [time.clock.req] / 2:
ในตารางที่ 59 C1และC2แสดงประเภทนาฬิกา t1และt2จะมีค่าส่งกลับโดยC1::now()ที่โทรกลับมาt1เกิดขึ้นก่อนที่จะเรียกกลับมาและทั้งสองของสายเหล่านี้เกิดขึ้นก่อนt2 C1::time_point::max()[หมายเหตุ: วิธีนี้C1ไม่ได้ล้อมรอบระหว่างt1และt2และ- ส่งหมายเหตุ]
นิพจน์: C1::is_steady
การส่งคืน: const bool
ความหมายในการดำเนินงาน: trueถ้าเป็นจริงเสมอและเวลาระหว่างนาฬิกาเห็บเป็นค่าคงที่มิฉะนั้นt1 <= t2false
นั่นคือมาตรฐานทั้งหมดที่มีต่อความแตกต่าง
หากคุณต้องการทำการเปรียบเทียบทางออกที่ดีที่สุดของคุณน่าจะเป็นstd::high_resolution_clockเพราะเป็นไปได้ว่าแพลตฟอร์มของคุณใช้ตัวจับเวลาความละเอียดสูง (เช่นQueryPerformanceCounterบน Windows) สำหรับนาฬิกานี้ อย่างไรก็ตามหากคุณกำลังเปรียบเทียบคุณควรพิจารณาใช้ตัวจับเวลาเฉพาะแพลตฟอร์มสำหรับการเปรียบเทียบของคุณเนื่องจากแพลตฟอร์มต่างๆจัดการสิ่งนี้แตกต่างกัน ตัวอย่างเช่นบางแพลตฟอร์มอาจให้วิธีการบางอย่างในการกำหนดจำนวนนาฬิกาจริงที่โปรแกรมต้องการ (เป็นอิสระจากกระบวนการอื่น ๆ ที่ทำงานบน CPU เดียวกัน) ยังดีกว่าให้รับมือกับผู้สร้างโปรไฟล์จริงและใช้สิ่งนั้น