Как я могу рассчитать время моей программы на С? - PullRequest
2 голосов
/ 31 июля 2009

Я просмотрел старые темы, но не смог найти ответ на свой вопрос:

Как я могу рассчитать время выполнения моей функции внутри программы на C?

Ответы [ 5 ]

13 голосов
/ 31 июля 2009

Простой метод - использовать функцию 'clock':

#include <time.h>

clock_t start, end;
double cpu_time_used;

start = clock();
... /* Do whatever you want to time */
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

Или, если вы работаете в Linux, вы можете использовать команду time для определения времени выполнения вашего приложения; это не позволяет вам определить время для конкретного раздела кода и включает время, затрачиваемое на запуск процесса и т. д.

time ./myapp

Редактировать: Это очень простой подход «взломай в быстром таймере». Для истинного профилирования производительности вы хотите взглянуть на правильный профилировщик, как предложил Ларри Ватанабе.

2 голосов
/ 12 апреля 2017
time ./a.out

работает выше единицы, и вывод будет:

real    0m0.017s
user    0m0.017s
sys 0m0.000s

real: общее время окончания программы / команды

user: время, необходимое в режиме пользователя.

sys: время, необходимое в режиме ядра

2 голосов
/ 31 июля 2009

Основной метод - использование функции clock (), с которой мы все начали.

Ex:.


clock_t start = clock();
/* Your code */
printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);

Однако, когда вы начинаете изучать операционные системы, аппаратное обеспечение, планировщики, многопоточность и т. Д., Вы поняли, что время выполнения - это нечто очень субъективное. Если вы хотите измерить производительность (что не обязательно означает время выполнения), вам нужны более надежные инструменты.

Gprof - это действительно простой в использовании C-профилировщик, который поможет вам лучше понять концепцию производительности.

2 голосов
/ 31 июля 2009

Это зависит от вашего компилятора и ОС. На рабочих станциях Sun я использовал «prof» или «gprof». Для вашего компилятора, ОС и компьютера, несомненно, есть инструмент профилирования - просто введите в Google "C profile yourOS yourcompiler" (подставьте название вашей ОС и вашего компилятора)

0 голосов
/ 31 июля 2009

Не уверен насчет конкретных имен функций в C, но обычной практикой является сохранение метки времени в микросекундах до начала тела, затем захватывание другой в конце и вычитание.

...