在我的家庭作业中,我应该测量不同算法的计算时间。我有以下功能“beginTime”和“endTime”来做。但是,当我将它们与我的算法一起编译时,编译器会显示“start”和“stop”未定义。但我不知道如何定义它们(它们应该是什么类型),以及如何使“endTime”中的“start”指向“beginTime”中的“start”。我该如何解决?另外,如何打印返回的值?
void
beginTime ()
{
gettimeofday (&start, 0);
}
float
endTime ()
{
gettimeofday (&stop, 0);
double begin = (double) start.tv_sec + (double) (start.tv_usec / 1.E6);
double end = (double) stop.tv_sec + (double) (stop.tv_usec / 1.E6);
return end - begin;
}
答案 0 :(得分:3)
如果您查找函数gettimeofday
,您会看到它需要struct timeval
。您的代码应如下所示:
#include <sys/time.h>
static struct timeval start, stop;
void beginTime()
{
gettimeofday (&start, 0);
}
float endTime()
{
gettimeofday (&stop, 0);
double begin = (double) start.tv_sec + (double) (start.tv_usec / 1.E6);
double end = (double) stop.tv_sec + (double) (stop.tv_usec / 1.E6);
return end - begin;
}
答案 1 :(得分:1)
man page for gettimeofday()
列出相关类型:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
你必须在某个地方保存start
。最糟糕的情况(因为这是一个家庭作业)可能只是使它成为一个全局变量。在生产环境中,beginTime()
函数实际上会为开始时间返回double
,您只需在运行您想要计算的算法之前记录它。