c++ 中的计时函数:最准确的方法

Timing Functions in c++: The most accurate approach

我想为代码中的每个函数计时。所以我有

func1(); 
func2();
func3();

目前我正在使用

#include <omp.h>
#include <time.h>

double start1=omp_get_wtime();
func1(); 
double end1=omp_get_wtime();
cout<<"\nfunc1 run time :"<<end1-start1<<endl;


double start2=omp_get_wtime();
func2(); 
double end2=omp_get_wtime();
cout<<"\nfunc2 run time :"<<end2-start2<<endl;
...

问题:有没有比我用来测量每个函数的运行时间更好更准确的方法?

C++ 最近(即标准 C++11)引入了 std::chrono 来获取计时信息。这是一个跨平台的机制。参见 here。如果你有一个现代编译器,你可以按如下方式使用它:

std::chrono::time_point<std::chrono::system_clock> t;
t = std::chrono::system_clock::now();

在 C++11 之前,C++ 不包含任何计时工具,您添加依赖任何一个

  • 操作系统提供的机制;在 Linux 上你可以使用 clock_gettime()
  • 硬件平台提供的机制(如x86 TSC

哪种机制最准确取决于您的特定操作系统和硬件平台。