Ежедневен бит(е) на C++ #73, измерване на времето с помощта на библиотеката C++11 std::chrono

Библиотеката std::chrono, добавена в C++11, позволява просто измерване на времето.

Библиотеката предоставя два типа за съхраняване на информация за времето: времеви точки и продължителности.

Освен очакваните операции, библиотеката предоставя функции за удобство като красив печат (C++20) и времеви литерали (C++14).

#include <chrono>
#include <iostream>
#include <thread> // sleep_for

using namespace std::literals;  

auto tp1 = std::chrono::steady_clock::now(); // obtain a time point
std::this_thread::sleep_for(1ms); // millisecond literal
auto tp2 = std::chrono::steady_clock::now();
// base type and precision depend on the type of clock

// The standard offers three clocks:
// std::chrono::system_clock, std::chrono::steady_clock,
// std::chrono::high_resolution_clock

// Whether a clock is steady and its resolution can be queried using:
bool system_is_steady = std::chrono::system_clock::is_steady;
auto resolution = std::chrono::system_clock::duration{1};

auto duration = tp2 - tp1; // difference of time points is a duration
std::cout << duration << "\n";
// example output: 1115389ns

// explicit type of duration, base type double, with micro precision
std::chrono::duration<double, std::micro> fpdur = tp2 - tp1;
std::cout << fpdur << "\n";
// example output: 1115.39µs

// duractions can be converted between each other using duration_cast
auto micro = std::chrono::duration_cast<
  std::chrono::microseconds>(tp2 - tp1);
std::cout << micro << "\n";
// example output: 1115µs

Отворете примера в Compiler Explorer.