我试图找出函数在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秒。
有任何帮助吗? 谢谢!
答案 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
函数不是测量函数运行时间的非常好的工具,因为精度非常低。请考虑使用gettimeofday
,clock_gettime
或简称clock
,所有这些都应该更精确。
答案 2 :(得分:0)
问题不在时间计算中,而是在printf()
语句的格式说明符中。您正在使用“%。f”,您可能需要“%f”。的。在这种情况下意味着精确。