Zapewnienie Jakości - pomiar czasu w C++

Opublikowane: 09/08/2015

w kategorii Zasoby.

Pomiar czasu może być używany jako swego rodzaju opcja do optymalizacji / profilowania. Czasami proces jest bardzo długi lub chcesz sprawdzić tylko jedną funkcję. Profiler spowalnia wykonywanie procesu lub potrzebujesz czasu wykonania aby porównać wyniki optymalizacji. W takim wypadku mierzenie czasu poprzez własnoręcznie wstawiony kod pomiarowy może być bardziej wygodne niż profiler.

Rozwiązania

1) C++11 std::chrono, boost::chrono

2) funkcja clock() (dla C/C++)

#include <time.h>
clock_t start = clock();
// --> wykonuj procesowanie
myFunc();
// <--
clock_t koniec = clock();
clock_t czasCalkowity = koniec - start;
double czasWSekundach = czasCalkowity / (double) CLOCKS_PER_SEC;

3) Win32 QueryPerformanceCounter - po prostu użyj:

/// Zwraca aktualny czas w cyklach CPU 
unsigned long long cpu_time_ticks()
{
  LARGE_INTEGER watch;
  QueryPerformanceCounter(&watch) ;
  return watch.QuadPart;
}

/// Konwertuje cykle CPU na milisekundy
unsigned long long cpu_time_ticks_to_ms(long long ticks)
{
  double res;
  LARGE_INTEGER frequency;
  QueryPerformanceFrequency( &frequency );
  res = (static_cast<double>(ticks) /static_cast<double>(frequency.QuadPart));
  res *= 1000.0;
  return static_cast<unsigned long long>(res);
}

4) High-performance Timing on Linux / Windows - Tom Distler, 2010

Zobacz również

Udostępnij

obserwuj