头文件:<chrono>
namespace:std::chrono
基本用法
#include <iostream>
#include <chrono>
#include <thread>
#include <ratio>
using namespace std;
int main() {
//auto start = chrono::system_clock::now();
auto start = chrono::high_resolution_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(1));
//auto end = chrono::system_clock::now();
auto end = chrono::high_resolution_clock::now();
std::chrono::duration<double> diff = end - start;
auto nanos = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
chrono::duration<double, std::nano> fp_nanos = end - start;
cout<<"use "<<diff.count()<<" s\n";
cout<<"use "<<nanos.count()<<" nanos\n";
cout<<"use "<<fp_nanos.count()<<" nanos\n";
return 0;
}
其中now返回的是一个std::chrono::time_point类型,默认情况下duration记录当前的时间段有多少秒
chrono提供了三个时钟,一般用system_clock,想要高精度就用high_resolution_clock
Duration
duration定义为
template<
class Rep,
class Period = std::ratio<1>
> class duration;
其中Rep表示计次数的算数类型,可以是整数或者小数,比如设置为double就能表示以小数计时。
Period表示被包含时长类型的,一般用于不同时长类型的转换
比如文档中给出的不同时长单位定义:

要改变duration的计时单位可以使用duration_cast
网友评论