Как засечь время выполнения функции? - C (СИ)
Формулировка задачи:
Упражнение 3.1 K&R
как новичку без серьезных описаний и дополнений кода засечь время выполнения функции? работаю в QT
В нашей программе бинарного поиска внутри цикла осуществляются две проверки, хотя
могла быть только одна (при увеличении числа проверок вне цикла). Напишите программу, предусмотрев в
ней одну проверку внутри цикла. Оцените разницу во времени выполнения.
Решение задачи: «Как засечь время выполнения функции?»
textual
Листинг программы
void function(list argument){
clock_t time_start= clock();
///body function
clock_t time_end = clock() - time_start;
printf("%u", (double)time_end / CLOCKS_PER_SEC);
Объяснение кода листинга программы
- В функции
functionобъявлен параметрargumentтипаlist. - В начале функции, в переменной
time_start, сохраняется текущее значение часовщика. - Выполняется тело функции.
- В переменной
time_endхранится время, прошедшее с момента вызова функции до ее окончания. - Значение
time_endвыводится на экран с помощью функцииprintf. - В качестве формата вывода используется строка
%u, которая означает, что нужно вывести значение без знака. - Для получения времени в секундах используется константа
CLOCKS_PER_SEC. (double)передtime_endобеспечивает преобразование значения в типdouble, чтобы результат можно было разделить на количество секунд в часе.- Результат вычисления
time_end / CLOCKS_PER_SECвыводится на экран.