Расчет времени работы для функций C

Я работаю над серверной программой, написанной на C, написанной как процедурный (не OO) код. Каждый метод реализует определенную функциональность. В целях диагностики я хочу добавить код в группу методов, которые будут вычислять и распечатывать время выполнения для соответствующих функций. Это на Linux, и я знаю, как рассчитать время работы.

Мой вопрос, что было бы лучшим, наиболее эффективным способом кодирования этого?

потому что это процедурный код, написанный на C I, придется добавить код ко всем (около 20) функциям для запуска таймера, окончания таймера и вычисления разницы. Есть ли лучший способ, чем этот?

2 ответа

Вы можете использовать внешний инструмент профилирования для этой цели. gprof это известный стандартный инструмент. Вот простой пример использования:

$ gcc -pg a.c -o a
$ ./a
$ gprof

Этот инструмент отображает общее время работы (абсолютное и процентное) каждой функции.

Однако это практически бесполезно, если вам нужна эта информация во время выполнения.

#include<time.h>
.
.
.
clock_t start, end, total;
start = clock();
.
.
.
end = clock();
total = (double) (start - end) / CLOCKS_PER_SEC;

Это даст вам время выполнения в секундах. Вы даже можете поместить это в макросы и обернуть вокруг функций.

Другие вопросы по тегам