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

时间:2015-11-19 10:56:32

标签: c++ timing

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

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;
...

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

1 个答案:

答案 0 :(得分:1)

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

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