[英]Timing a function in a C++ program that runs on Linux
我正在尝试使用在用户空间中执行所需的时间来计时C ++程序的功能。 我从程序内部尝试了clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start)命令,但恐怕这是CPU时间,而不是我实际需要的用户时间。 在这种情况下,“程序名称”时间将不起作用,因为我只是在计时一个功能。 任何帮助都会很棒。 谢谢!
使用times()
函数,请参见: http : //linux.die.net/man/2/times
这将为您提供当前用户和系统时间。 您可以在进入和退出子例程时调用它,然后减去。
您还可以使用诸如gprof之类的探查器,它将自动为您完成所有操作(但会产生开销)。
尝试boost:timer库。 它是便携式的,易于使用。 Boost计时器分别为您提供挂钟时间,用户时间和系统时间。
http://www.boost.org/doc/libs/1_53_0/libs/timer/doc/cpu_timers.html
您可以使用此处例举的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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.