c++之chrono计时

文章目录

参考

前言

  • 传统方法: 使用ctime计时, 精度较低
  • c++11方法: 使用chrono计时, 可以达到毫秒, 微秒, 纳秒级别的精度

chrono

#include <chrono>

auto start_1 = std::chrono::system_clock::now();
auto end_1 = std::chrono::system_clock::now();
auto duration_2 = std::chrono::duration_cast<std::chrono::milliseconds>(end_2 - start_2).count();  // 毫秒

auto start_2 = std::chrono::system_clock::now();
auto end_2 = std::chrono::system_clock::now();
auto duration_2 = std::chrono::duration_cast<std::chrono::microseconds>(end_2 - start_2).count();  // 微秒

auto start_3 = std::chrono::high_resolution_clock::now(); 
auto end_3 = std::chrono::high_resolution_clock::now();
auto duration_3 = std::chrono::duration_cast<std::chrono::nanoseconds>(end_3 - start_3).count(); //纳秒

ctime

#include <chrono>  // C++11
#include <ctime>  // 传统方法
#include <iostream>
#include <cmath>


int main(int argc, char** argv)
{
  // 传统的方法
  std::clock_t start_1 = std::clock();
  double sum_1 = 0;
  for (size_t i = 0; i < 1000; ++i)
  {
    sum_1 += std::pow(i, 10);
  }
  std::clock_t end_1 = std::clock();
  std::cout << "timer_1 cost: " << double(end_1 - start_1) / CLOCKS_PER_SEC << " seconds" <<std::endl;

  // 微秒级的精度
  auto start_2 = std::chrono::system_clock::now();
  double sum_2 = 0;
  for (size_t i = 0; i < 1000; ++i)
  {
    sum_2 += std::pow(i, 10);
  }
  auto end_2 = std::chrono::system_clock::now();
  auto duration_2 = 1.e-6 * std::chrono::duration_cast<std::chrono::microseconds>(end_2 - start_2).count();
  std::cout << "timer_2 cost: " << double(duration_2) << " seconds" <<std::endl;
  
  // 更高的精度-纳米级
  auto start_3 = std::chrono::high_resolution_clock::now(); 
  double sum_3 = 0;
  for (size_t i = 0; i < 1000; ++i)
  {
    sum_3 += std::pow(i, 10);
  }
  auto end_3 = std::chrono::high_resolution_clock::now();
  auto duration_3 = 1.e-9 * std::chrono::duration_cast<std::chrono::nanoseconds>(end_3 - start_3).count();
  std::cout << "timer_3 cost: " << double(duration_3) << " seconds" <<std::endl;
  return 0;
}

结果

timer_1 cost: 8.1e-05 seconds
timer_2 cost: 7.8e-05 seconds
timer_3 cost: 7.7762e-05 seconds
发布了10 篇原创文章 · 获赞 2 · 访问量 752

猜你喜欢

转载自blog.csdn.net/woaizhiyang/article/details/104065285