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 。

posted @ 2022-07-14 17:09  GameSprite  阅读(488)  评论(0编辑  收藏  举报