З 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_clockабо steady_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 <= t2це завжди істина, а час між годинниковими тиками постійний, інакше false.
Це все, що має стандарт щодо їх відмінностей.
Якщо ви хочете виконати бенчмаркінг, найкраще буде, мабуть std::high_resolution_clock, тому, що ваша платформа використовує QueryPerformanceCounterдля цього годинника таймер із високою роздільною здатністю (наприклад, у Windows). Однак, якщо ви займаєтеся бенчмаркінгом, вам дійсно слід подумати про використання таймерів, що відповідають певним платформам, для вашого тесту, оскільки різні платформи по-різному обробляють це. Наприклад, деякі платформи можуть надавати вам деякі способи визначення фактичної кількості тактових частот, необхідних програмі (незалежно від інших процесів, що працюють на тому самому ЦП). А ще краще, візьміть у руки справжній профайлер і використовуйте його.