C++的计时器chrono

头文件:<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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容