Ежедневен бит(е) на 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