2015-11-19 48 views
0

我想在我的代碼中計算每個函數。所以,我有C++中的計時函數:最準確的方法

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

問:有沒有更好的,更準確的方式比我用來測量每個功能的運行時間?

+0

計時器可能很吵,所以要做的事情(如果可能的話)是多次運行這些功能並獲得最佳結果。 –

+0

@TomSeddon當然,我會這麼做的。 – user153465

回答

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

這是最準確的機制取決於特定的操作系統和硬件平臺上。

+0

謝謝你的答案。我會試一試。 – user153465

相關問題