在C中定时功能

时间:2014-01-07 22:19:51

标签: c function time

我试图找出函数在C中执行所需的时间。 我正在尝试的是以下内容:

#include <time.h>

time_t start;
time_t finish;
double seconds;

time(&start);
FUNCTION
time(&finish);

seconds = difftime(finish,start);

printf("Time taken is %.f", seconds);

但是,对于不同的函数,返回值始终相同:1389133144秒。

有任何帮助吗? 谢谢!

3 个答案:

答案 0 :(得分:1)

我经常使用的其他方法是这样的:

#include <sys/time.h>

//this is from http://www.cs.usfca.edu/~peter/ipp/
#define GET_TIME(now) { \
   struct timeval t; \
   gettimeofday(&t, NULL); \
   now = t.tv_sec + t.tv_usec/1000000.0; \
}

//in your code
double start, end;
GET_TIME(start);
//... do some stuff...
GET_TIME(end);

printf("TOTAL TIME = %f secs\n", end-start);

答案 1 :(得分:1)

time函数返回自纪元,1970-01-01 00:00:00 +0000(UTC)以来的秒数。如果参数不是NULL,它还会将时间存储在其中。

1389133144实际上是一个非常合理的时间戳,它是2014-01-07 22:19:04。

但是,time函数不是测量函数运行时间的非常好的工具,因为精度非常低。请考虑使用gettimeofdayclock_gettime或简称clock,所有这些都应该更精确。

答案 2 :(得分:0)

问题不在时间计算中,而是在printf()语句的格式说明符中。您正在使用“%。f”,您可能需要“%f”。的。在这种情况下意味着精确。