1

在我的家庭作业中,我应该测量不同算法的计算时间。我被赋予了以下功能“beginTime”和“endTime”来做到这一点。但是,当我编译它们以及我的算法时,编译器显示“开始”和“停止”是未定义的。但是我不知道如何定义它们(它们应该是什么类型),以及如何使“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;
}
4

2 回答 2

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;
}
于 2013-11-11T01:14:51.913 回答
1

手册页gettimeofday()列出了相关类型:

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};

你必须保存在start某个地方。最坏的情况(因为这是一个家庭作业)可能只是让它成为一个全局变量。在生产环境中,您的beginTime()函数实际上会返回一个double开始时间,您只需在运行您尝试计时的算法之前记录它。

于 2013-11-11T01:16:28.307 回答