C ++:查找代码执行时间的问题

时间:2011-01-28 11:52:51

标签: c++

为了找到下面给出的代码的执行时间,我写了一个Timer类。

Timer::StartTimer();
DoOperation();
cout<<"Time elapsed: "<<Timer::GetTime();

我得到的错误是startTime和endTime未定义。我无法解决问题。你能帮忙吗?

文件文件:timer.h

#include <sys/time.h>

class Timer
{
    static timeval startTime, endTime;

public:
     static void StartTimer();
     static long int GetTime();
};

文件:Timer.cc

#include "Timer.h"

void Timer::StartTimer()
{
    gettimeofday(&startTime, NULL);
}

long int Timer::GetTime()
{
    long int seconds, useconds, mtime;
    gettimeofday(&endTime, NULL);
    seconds  = endTime.tv_sec  - startTime.tv_sec;
    useconds = endTime.tv_usec - startTime.tv_usec;
    mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;
    return(mtime);
}

3 个答案:

答案 0 :(得分:9)

在timer.cc中你需要:

timeval Timer::startTime;
timeval Timer::endTime;

请参阅此FAQ

正如其他人指出的那样,将所有静态设置为“不寻常”设计,如果您尝试在多个位置同时使用此代码,则可能会导致问题。可能你想要不使它静止,并在你使用它时有一个实例。

答案 1 :(得分:4)

您需要实例化静态成员变量。

将此添加到您的Timer.cc

timeval Timer::startTime;
timeval Timer::endTime;

答案 2 :(得分:1)

我认为如果一切都是静态的,你会更好地使用命名空间而不是类

您需要定义Timer :: endTime和Timer :: startTime