[英]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.