C++ 精确计时方法std::chrono(clock计时为0)

计时的方法很多,有C/C++自带的计时方法,也有window的计时API或者Linux的API,本文只介绍std::chrono的最简单用法。

        chrono的计时单位是ns,精度是100ns(1ms = 1000000ns)。下面代码中chrono计时部分(double)(te-ts).count()的单位是ns,(double)(te-ts).count()/1000000单位是ms。

        clock的计时单位是ms,精度是10000ms,即0.01s,低于这个时间的间隙计时为0。下面代码中clock部分(double)(te_1-ts_1)的单位是ms,(double)(te_1-ts_1)/CLOCKS_PER_SEC单位是s。

        以下面代码为例,chrono计时为0.042393ms,但是clock的计时为0s,这是因为打印的时间远远小于clock的精度,所以统计时间为0,因此在统计时间非常小的时候用chrono才能反应精确的时间。(并没有研究过更多时间统计方法,仅仅是chrono和clock两种方法的对比而已)

#include <iostream>
#include <chrono>

int main(){

   // chrono recorde time
   auto ts = std::chrono::system_clock::now();
   std::cout<<" balabala"<<std::endl;
   auto te = std::chrono::system_clock::now();
   std::cout<<"chrono time:"<<(double)(te-ts).count()/1000000<<std::endl;

   // clock recorde time
   clock_t ts_1 = std::clock();
   std::cout<<" balabala"<<std::endl;
   clock_t te_1 = std::clock();
   std::cout<<"clock time:"<<(double)(te_1-ts_1)/CLOCKS_PER_SEC<<std::endl;
    

    return 0;
}

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值