簡體   English   中英

在Linux上運行的C ++程序中計時功能

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM