【C++】chrono库计时

chrono时间库是c++ 11中的新特性,提供计时,时钟等功能。
在平时学习测试的时候会记录程序运行时间,比较两个或多个算法的优劣,通常会用chrono。
参考网站:
cppreference.com
cplusplus.com

1.duration

#include<iostream>
#include<chrono>
using namespace std;
using namespace chrono;

void test()
{
	int a = 0;
	int i = 0;
	while(i<100000000)
	{
		a++;
		i++;
	}
}

int main()
{
	auto t1 = steady_clock::now();
    test();
    auto t2 = steady_clock::now();
    
    auto time_span = duration_cast<duration<double>>(t2 - t1);
    auto ms = duration_cast<milliseconds>(t2  - t1); // or, change 't2 - t1' to 'time_span'
    
    cout << "Test steady_clock: " << endl;
    cout << "This function took " << time_span.count() << " seconds." << endl;
    cout << "This function took " << ms.count() << " milliseconds." << endl;

	return 0;
}
Test steady_clock: 
This function took 0.0361612 seconds.
This function took 36 milliseconds.

其中关于duration模板类:
template <class Rep, class Period = ratio<1> >class duration;
第一个参数是类型,决定后面的用count()打印输出;第二个参数是以秒为单位的比率(ratio),理解为1s的多少分之一,默认不写是秒。
封装好的常用类:

member typePeriod
hoursratio<3600,1>
minutesratio<60,1>
secondsratio<1,1>
millisecondsratio<1,1000>
microsecondsratio<1,1000000>
nanosecondsratio<1,1000000000>

在这里插入图片描述
duration.count()采用的不是四舍五入,是截断。

#include<iostream>
#include<chrono>
using namespace std;

int main()
{
  chrono::seconds s (1);             // 1 second
  chrono::milliseconds ms = chrono::duration_cast<chrono::milliseconds> (s);

  ms += chrono::milliseconds(2999);  // 2999 millisecond
  s = chrono::duration_cast<chrono::seconds> (ms);   // truncated

  cout << "ms: " << ms.count() << endl;
  cout << "s: " << s.count() << endl;

  return 0;
}
ms: 3999
s: 3
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值