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

我正在尝试使用在用户空间中执行的时间来计算我的C ++程序的一个函数。 我尝试了从程序中的clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&开始)命令,但恐怕这是CPU时间,而不是我实际需要的用户时间。 在这种情况下,“程序名称”的时间将不起作用,因为我只是计时function。 任何帮助将是伟大的。 谢谢!

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

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

你也可以使用像gprof这样的分析器,它会自动为你做这件事(但会招致开销)。

你可以使用gettimeofday()来作为例子。

将此函数添加到您的代码中:

 #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; 

试试boost:timer库。 它是便携式和易于使用。 升压计时器分别给你挂钟时间,用户时间和系统时间。

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