РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
530 of 815 menu

Класс steady_clock

Класс steady_clock из заголовочного файла <chrono> представляет собой монотонные часы, которые никогда не корректируются и не идут назад. Это делает их идеальными для измерения длительности интервалов времени. В отличие от system_clock, значения steady_clock не связаны с реальным календарным временем, а представляют собой просто тики, которые монотонно возрастают. Класс не принимает параметров и содержит статический метод now, возвращающий текущую точку времени, а также типы rep, period, duration и time_point.

Синтаксис

#include <chrono> std::chrono::steady_clock::now(); std::chrono::steady_clock::time_point tp; std::chrono::steady_clock::duration d; std::chrono::steady_clock::rep r; std::chrono::steady_clock::period p;

Пример

Давайте измерим время выполнения цикла с помощью steady_clock:

#include <iostream> #include <chrono> using namespace std; int main() { auto start = chrono::steady_clock::now(); long long sum = 0; for (int i = 0; i < 1000000; i++) { sum += i; } auto end = chrono::steady_clock::now(); auto diff = end - start; cout << "Sum: " << sum << endl; cout << "Time: " << chrono::duration_cast<chrono::milliseconds>(diff).count() << " ms" << endl; return 0; }

Результат выполнения кода:

"Sum: 499999500000" "Time: 2 ms"

Пример

Давайте получим текущую точку времени и выведем её в секундах с начала отсчёта часов:

#include <iostream> #include <chrono> using namespace std; int main() { auto tp = chrono::steady_clock::now(); auto sec = chrono::duration_cast<chrono::seconds>(tp.time_since_epoch()); cout << "Seconds since epoch: " << sec.count() << endl; return 0; }

Результат выполнения кода:

"Seconds since epoch: 1234567"

Пример

Давайте измерим время задержки с помощью sleep_for и steady_clock:

#include <iostream> #include <chrono> #include <thread> using namespace std; int main() { auto start = chrono::steady_clock::now(); this_thread::sleep_for(chrono::milliseconds(500)); auto end = chrono::steady_clock::now(); auto diff = chrono::duration_cast<chrono::milliseconds>(end - start); cout << "Slept for: " << diff.count() << " ms" << endl; return 0; }

Результат выполнения кода:

"Slept for: 500 ms"

Смотрите также

  • класс system_clock,
    который представляет системные часы реального времени
  • метод now,
    который возвращает текущую точку времени
  • класс high_resolution_clock,
    который представляет часы с наименьшим доступным периодом тика
  • класс time_point,
    который представляет точку во времени
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить