C中的timeval结构需要帮助

时间:2011-06-30 14:31:52

标签: c struct

我需要计算运行某个函数所需的时间并运行以下代码(来源: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 个答案:

答案 0 :(得分:2)

你是对的。

结构的tv_sec成员存储秒数,tv_usec成员(微秒)通过除以10 ^ 6转换为秒。

答案 1 :(得分:1)

它提供以秒为单位的时间差微秒(使用以下术语:(timer_end.tv_usec - timer_start.tv_usec))。所以你应该没事:)

答案 2 :(得分:-1)

像这样修改:

double timer_spent = (timer_end.tv_sec - timer_start.tv_sec)*1e6 + (timer_end.tv_usec - timer_start.tv_usec);