在Linux上运行的C ++程序中定时函数

时间:2011-02-19 20:46:55

标签: c++ linux timing

我正在尝试使用在用户空间中执行所花费的时间来计算我的C ++程序的功能。我从程序内部尝试了clock_gettime(CLOCK_PROCESS_CPUTIME_ID,& start)命令,但我担心这是CPU时间而不是我实际需要的用户时间。时间“程序名称”在这种情况下不起作用,因为我只计时功能。任何帮助都会很棒。 谢谢!

3 个答案:

答案 0 :(得分:5)

使用times()功能,请参阅:http://linux.die.net/man/2/times

这将为您提供流程的当前用户和系统时间。您可以在进入和退出子程序时调用它,然后减去。

您还可以使用像gprof这样的探查器,它会自动为您完成此任务(但会产生开销)。

答案 1 :(得分:1)

您可以使用gettimeofday()作为示例here

将此功能添加到您的代码中:

#include <sys/time.h> 

long myclock()
{
    struct timeval tv;
    gettimeofday(&tv, NULL);
    return (tv.tv_sec * 1000000) + tv.tv_usec;
}

并使用它来检索时间:

long start = myclock();

// do something
// ...

long end = myclock() - start;

std::cout << "[" << time->tm_hour << ":"<< time->tm_min << ":" << time->tm_sec << 
             "] time:" << std::setprecision(3) << end/1000000.0 << std::endl;

答案 2 :(得分:1)

尝试使用boost:计时器库。它便携且易于使用。 Boost定时器分别为您提供挂钟时间,用户时间和系统时间。

http://www.boost.org/doc/libs/1_53_0/libs/timer/doc/cpu_timers.html