Функция now
Функция now класса high_resolution_clock возвращает объект time_point, представляющий текущий момент времени. Этот класс предназначен для измерения коротких интервалов времени с наивысшей точностью, которую может обеспечить система. Функция не принимает параметров. Возвращаемое значение зависит от реализации и может использовать самые точные часы из доступных в операционной системе.
Синтаксис
static time_point now() noexcept;
Пример
Давайте измерим время выполнения простого цикла с помощью функции now:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
auto start = high_resolution_clock::now();
long long sum = 0;
for (int i = 0; i < 1000000; i++)
{
sum += i;
}
auto end = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(end - start);
cout << "Sum: " << sum << endl;
cout << "Time: " << duration.count() << " microseconds" << endl;
return 0;
}
Результат выполнения кода:
"Sum: 499999500000"
"Time: 1234 microseconds"
Пример
Давайте сравним точность high_resolution_clock и system_clock, измерив одно и то же действие:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
auto start_hr = high_resolution_clock::now();
auto start_sys = system_clock::now();
volatile int res = 0;
for (int i = 0; i < 100000; i++)
{
res += i;
}
auto end_hr = high_resolution_clock::now();
auto end_sys = system_clock::now();
auto dur_hr = duration_cast<nanoseconds>(end_hr - start_hr);
auto dur_sys = duration_cast<nanoseconds>(end_sys - start_sys);
cout << "High resolution: " << dur_hr.count() << " ns" << endl;
cout << "System clock: " << dur_sys.count() << " ns" << endl;
return 0;
}
Результат выполнения кода:
"High resolution: 45000 ns"
"System clock: 52000 ns"
Смотрите также
-
класс
high_resolution_clock,
который представляет самые точные часы системы -
функция
nowклассаsteady_clock,
которая возвращает время монотонных часов -
функция
nowклассаsystem_clock,
которая возвращает системное время -
класс
time_point,
который представляет момент времени