Расчет времени работы для функций 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;
Это даст вам время выполнения в секундах. Вы даже можете поместить это в макросы и обернуть вокруг функций.