如何衡量计算时间

时间:2013-11-11 01:10:28

标签: c time

在我的家庭作业中,我应该测量不同算法的计算时间。我有以下功能“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;
}

2 个答案:

答案 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,您只需在运行您想要计算的算法之前记录它。