2015-11-19 2 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