时间流cpp学习笔记(二)

c++的时钟


#include<chrono>
#include <iostream>
#include<ctime>
#include<iomanip>
#include<thread>
using namespace std;
/*
*   clock都有的静态成员函数:
*   static time_point now()   //get current time
*   static __time64_t to_time_t(const time_point& _Time)//显示成正常时间需要做的事
*   static time_point from_time_t(__time64_t _Tm) noexcept {//convert from __time64_t,就是反过来把time_t变为time_point
* 
* 
* 
* 
* 
  system_clock:获取当前时间点(time_point),新世纪计数。想要获得正常的时间显示,要手动转化为time_t才能显示
  steady_clock:计时的(常用于游戏里计时),类似于秒表
  high_resolution_clock:(高精度时钟)获取的值比system_clock更精准
  (记住,以上三个都是一个 类 )

*/

void testsystem_clock()
{
	chrono::system_clock::time_point reslut=chrono::system_clock::now();//获取当前时间
	//      结构体 里有    类     
	//接下来,把time_point 转化为 time_t
	time_t tm = chrono::system_clock::to_time_t(reslut);
	//c语言打印
	cout << ctime(&tm) << endl;
	//转换为tm类型,再通过c++输出时间函数打印时间
	//包含 iomanip 头文件
	std::tm* p = localtime(&tm);
	cout << "格式化打印:" <<put_time(p,"%F %x") << endl;//%F 出来的是 - ;%x 出来的是 /
	cout << "格式化打印:" << put_time(p, "%F %T") << endl;//记住中间put_time的“% %”为显示的格式参数

	//获取时间戳,实质上就是获取时间间隔。时间戳:距离1970年有多少秒
	cout << "count:" << reslut.time_since_epoch().count() << endl;
}//系统时钟

//对时间计时,类似于时间进度条
//void teststeady_clock()
//{
//	chrono::steady_clock::time_point  star = chrono::steady_clock::now();
//	int i = 0;
//	while (i<100)
//	{
//		chrono::steady_clock::time_point end = chrono::steady_clock::now();
//		auto time = end - star;
//		cout << "耗时:" << time.count() << "ns" << endl;//此处是一直显示计时的方法
//
//	}
//}
void teststeady_clock1()
{
	chrono::steady_clock::time_point  star = chrono::steady_clock::now();
	int i = 0;
	this_thread::sleep_for(1s);//在这沿用了线程方法
	chrono::steady_clock::time_point end = chrono::steady_clock::now();
	auto time = end - star;
	cout << "耗时:" << time.count() << "ns" << endl;
	chrono::duration<double, ratio<1>>   Result = end - star;//用duration来转换
	cout << "耗时:" << Result.count() << "s" << endl;
}
void testhigh_resolution()
{
	chrono::high_resolution_clock::time_point star = chrono::high_resolution_clock::now();
	//high_resolution_clock-----转到定义一看,会发现其实是别名,但是.....用这个运行结果还是好一点的,应该是now那个地方的计时方式做了更改
	int i = 0;
	this_thread::sleep_for(1s);
	chrono::high_resolution_clock::time_point end = chrono::high_resolution_clock::now();
	auto time = end - star;
	cout << "耗时:" << time.count() << "ns" << endl;
	chrono::duration<double, ratio<1>>   Result = end - star;//用duration来转换
	cout << "耗时:" << Result.count() << "s" << endl;
}



int main()
{
	//chrono::system_clock::now();
	/testsystem_clock();
	teststeady_clock1();
	testhigh_resolution();

	return 0;
}


 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值