C++ 标准库 Chrono计时
Chrono
C++11提供的程序运行时间相关的库,如果你需要更为精准的时间或者更高的时间获取的调用性能,需要引入平台专门的操作系统库,比如win32 api的高精度计时器QueryPerformaceCounter。
头文件
#include <chrono>
使用时间字面量
using namespace std::literals::chrono_literals;
std::this_thread::sleep_for(1s);//1s是c++11新增的时间字面量
代码示例
auto start = std::chrono::high_resolution_clock::now();
std::this_thread::sleep_for(1s);
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<float> duration = end - start;
std::cout << duration.count() << "s " << std::endl;//1.00389s
关于high_resolution_clock
high_resolution_clock 在不同标准库实现之间实现并不一致,尽量不要使用。通常它只是std::chrono::steady_clock 或 std::chrono::system_clock的别名。
例如:对于gcc的libstdc++它是system_clock对于MSVC它是steady_clock,而对于clang的 libc++ 它取决于配置。
它是system_clock时不是单调的(即时间能后退),但具体实现取决于库或配置。
通常应该直接使用 std::chrono::steady_clock 或 std::chrono::system_clock 代替 std::chrono::high_resolution_clock :
对时长度量使用 steady_clock ,对壁钟时间使用 system_clock 。