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";
}


1
2
3

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐