Требуется помощь с временной структурой в C - PullRequest
2 голосов
/ 30 июня 2011

Мне нужно было вычислить время, необходимое для запуска определенной функции, и наткнуться на следующий код (источник: http://snippets.dzone.com/posts/show/4254) с утверждением, что «... записать и вывести время выполнения фрагментакод в микросекундах "

/* Put this line at the top of the file: */
#include <sys/time.h>

/* Put this right before the code you want to time: */
struct timeval timer_start, timer_end;
gettimeofday(&timer_start, NULL);

/* Put this right after the code you want to time: */
gettimeofday(&timer_end, NULL);
double timer_spent = timer_end.tv_sec - timer_start.tv_sec + (timer_end.tv_usec - timer_start.tv_usec) / 1000000.0;
printf("Time spent: %.6f\n", timer_spent);

, но мой личный опыт с фрагментом кода показывает, что время вывода выводится в секундах, а не в микросекундах.Мне нужна информация о том, прав я или нет (мне нужно уточнить это раз и навсегда).

Ответы [ 3 ]

2 голосов
/ 30 июня 2011

Вы правы.

Элемент tv_sec структуры хранит секунды, а элемент tv_usec (микросекунды) преобразуется в секунды путем деления на 10 ^ 6.

1 голос
/ 30 июня 2011

Предоставляет разницу во времени в секундах и микросекундах (со следующим термином: (timer_end.tv_usec - timer_start.tv_usec)). Так что с тобой все должно быть в порядке:)

0 голосов
/ 30 июня 2011

Изменить так:

double timer_spent = (timer_end.tv_sec - timer_start.tv_sec)*1e6 + (timer_end.tv_usec - timer_start.tv_usec);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...