C: измерение времени работы в Linux - PullRequest
0 голосов
/ 12 апреля 2020

Мне нужно измерить время внутри программы C. Я гуглил и нашел два варианта: gettimeofday() и time() системные вызовы. Например:

#include <time.h>

...

time_t start, end;
double seconds;

time(&start);

/* Run some complex algorithm  ... */

time(&end);
seconds = difftime(end, start);

Или

#include <sys/time.h>
...
struct timeval start, end;
double elapsed_time;

gettimeofday(&start, NULL);

/* Data processing */

gettimeofday(&end, NULL);

/* calculate time in ms. */
elapsed_time = (end.tv_sec - start.tv_sec) * 1000.0;
elapsed_time += (end.tv_usec - start.tv_usec) / 1000.0;

Итак, как я понимаю, второй метод дает более высокую точность (милли / микросекунды), а первый возвращает истекшее время только в секундах. , Я прав?

1 Ответ

1 голос
/ 12 апреля 2020

Да, ваше понимание верно.

Существует также clock_gettime, который обеспечивает наносекундное разрешение. (Независимо от того, имеет ли он наносекунду точность , зависит от вашего оборудования.)

...