C++ 计时方法——std::chrono


C++11 标准的”最佳计时方法”的代码:

鸽了好久了,最近准备整理下所学知识,namo先从C++11的特性开始吧

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

int main(){
    auto start = system_clock::now();
    int z=0;
    for(int i=0;i<10000;++i){
        z++;
    }
    auto end   = system_clock::now();
    auto duration = duration_cast<microseconds>(end - start);
    cout <<  "Spent " << double(duration.count()) * microseconds::period::num / microseconds::period::den << " seconds." << endl;
    return 0;
} 

此方法可以精确到微妙,如花费了0.123456秒。。

  • 1.关键词 auto 是一个“自动类型”,auto可以接受任何类型
  • 2.我们获得时间点主要是通过clock时钟获得的。一共有三个时钟,其中system_clock 是 C++11 提供的一个 clock。(除此之外,还有两个clock:steady_clock 和 high_resolution_clock)
  • 3.now( ) 表示计时的那一时刻
  • 4.duration_cast< > 表示类型转换
  • 5.microseconds 表示微秒。另外的五种时间单位:hours, minutes, seconds, milliseconds, nanoseconds
  • 6.num 和 den分别表示分子(numerator)和分母(denominator)。在上面的代码中,num=1, den=1,000,000
  • 7.count( ) 用来返回时间

C++11的 #include< chrono >和传统的 #include < ctime >相比,代码量较多,但是精度也更高。


文章作者: 再也不会
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 再也不会 !
  目录