美文网首页
C++的计时器chrono

C++的计时器chrono

作者: Glitter试做一号机 | 来源:发表于2019-05-30 10:20 被阅读0次

头文件:<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表示被包含时长类型的,一般用于不同时长类型的转换
比如文档中给出的不同时长单位定义:


chrono时长类型

要改变duration的计时单位可以使用duration_cast

相关文章

网友评论

      本文标题:C++的计时器chrono

      本文链接:https://www.haomeiwen.com/subject/xjqmtctx.html