Измерение времени выполнения фрагментов кода

В некоторых случаях необходимо измерить время выполнения фрагментов кода, например, с целью оптимизации программы. Измерить время выполнения позволяет функция clock(). Прототип функции:

#include <ctime> /* или #include <time.h> */
clock_t clock(void);
typedef long clock_t;

Функция возвращает приблизительное время выполнения программы до вызова функции. Если время получить не удалось, функция возвращает значение (clock_t)(–1). Чтобы измерить время выполнения фрагмента следует вызвать функцию перед фрагментом кода и сохранить результат. Затем вызвать функцию после фрагмента и вычислить разность между двумя значениями. Чтобы получить значение в секундах необходимо разделить результат на значение макроса CLOCKS_PER_SEC. Определение макроса выглядит следующим образом:

#define CLOCKS_PER_SEC 1000

Для примера имитируем фрагмент кода с помощью функции Sleep() из WinAPI и произведем измерение времени выполнения (листинг 11.4).

Листинг 11.4. Измерение времени выполнения

#include <iostream>
#include <ctime>
#include <windows.h>

int main() {
   clock_t t1, t2, t3;
   t1 = std::clock();                      // Метка 1
   std::cout << "t1 = " << t1 << std::endl;
   Sleep(3000);                            // Имитация фрагмента кода
   t2 = std::clock();                      // Метка 2
   std::cout << "t2 = " << t2 << std::endl;
   t3 = t2 - t1;                           // Разница между метками
   std::cout << "t3 = " << t3 << std::endl;
   std::cout << ((double)t3 / CLOCKS_PER_SEC) << " sec."
             << std::endl;
   return 0;
}

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов