c++计时
c++计时
·
c++计时
c++11之前我们可以借助c语言的ctime
,c++11引入了```chrono``计时库
std::chrono::system_clock: 依据系统的当前时间 (不稳定,调整系统时间会有影响)
std::chrono::steady_clock: 以统一的速率运行(调整系统时间也不会有影响)
std::chrono::high_resolution_clock: 提供最高精度的计时周期
这三个时钟类都提供了一个静态成员函数now()用于获取当前时间,该函数的返回值是一个time_point类型,
system_clock除了now()函数外,还提供了to_time_t()静态成员函数。用于将系统时间转换成熟悉的std::time_t类型
#include <iostream>
#include<ctime>//c语言计时方法
#include <chrono>//c++11计时方法
int main()
{
auto sys_time = std::chrono::system_clock::now();
auto tNow = std::chrono::system_clock::to_time_t(sys_time);
//ctime()函数将time_t类型的时间转化成字符串格式,这个字符串自带换行符
std::string str_time = std::ctime(&tNow);
std::cout << "系统时间"<<str_time << "\n";
//c语言计时
auto c_begin = std::clock();
//chrono计时:
int s = 0;
auto begin = std::chrono::steady_clock::now();
for (int i = 0; i < 10000; ++i)
{
for (int j = 0; j < 10000; ++j)
{
++s;
}
}
auto c_end = std::clock();
std::cout << "c语言计时:" << std::difftime(c_end, c_begin) <<"毫秒" << std::endl;
auto end = std::chrono::steady_clock::now();
/*
duration: chrono 中的一个描述持续时间的类,比较复杂,这里的 <size_t, std::nano> 可以简单理解为,duration 对象 dur 用一个 size_t 类型的变量来计数,这个变量的 1 就代表 1/ 1000000000 秒,也就是 1 纳秒,也就是说 dur 对象中记录的持续时间以纳秒为单位。
*/
std::chrono::duration<size_t, std::nano> dur =end - begin;
std::cout << "0 被计时代码耗时:" << dur.count() << " 纳秒" << std::endl;
std::cout << "1 被计时代码耗时:" << std::chrono::duration_cast<std::chrono::nanoseconds>(dur).count() << " 纳秒" << std::endl;
std::cout << "2 被计时代码耗时:" << std::chrono::duration_cast<std::chrono::microseconds>(dur).count() << " 微妙" << std::endl;
std::cout << "3 被计时代码耗时:" << std::chrono::duration_cast<std::chrono::milliseconds>(dur).count() << " 毫秒" << std::endl;
std::cout << "4 被计时代码耗时:" << std::chrono::duration_cast<std::chrono::seconds>(dur).count() << " 秒钟" << std::endl;
std::cout << "5 被计时代码耗时:" << std::chrono::duration_cast<std::chrono::minutes>(dur).count() << " 分钟" << std::endl;
std::cout << "6 被计时代码耗时:" << std::chrono::duration_cast<std::chrono::hours>(dur).count() << " 小时" << std::endl;
std::cout << "Hello World!\n";
}
更多推荐
已为社区贡献3条内容
所有评论(0)