簡體   English   中英

測量子進程的時間

[英]Measure the time of a child process

我想測量子進程的時間

#include <time.h>

int main() {
    ...
    time t begin, end, diff;
    ...
    //fork etc in here
    time(&begin);
    ...
    //some things
    ...
    time(&end);
    return 0;
}

我現在有2個時間戳,有沒有辦法將其格式化為子進程的運行時,以小時:分鍾:秒?

我努力了

diff = end - begin;

但是我得到了很多。

(對不起,僅部分代碼,但它在另一台PC上。)

如果系統對“ time_t ”使用除“整數秒數”之外的其他格式,則可能應該使用difftime而不是減法來計算差異。

difftime返回的兩個時間之間的秒數,作為double 然后,將其轉換為小時,分鍾和秒是一個簡單的算術問題。

您可以使用difftime計算差異:

double diff_in_seconds = difftime(end, begin);

或者,為了獲得更高的精度,請使用C ++ 11 計時單調時鍾之一,例如std :: steady_clock

auto start = std::chrono::steady_clock::now();
// some things
auto end = std::chrono::steady_clock::now();
double time_in_seconds = std::chrono::duration_cast<double>(end - start).count();

另請參閱此答案以了解為什么您應該使用單調時鍾的詳細信息。

問題中的嘗試是C方式,而不是C ++。 在C ++ 11中(假設您有一個),您可以獲得2個時間點,然后將它們之間的差值轉換為所需的單位,如此處的示例所示: http : //en.cppreference.com/w/cpp /計時/持續時間/ duration_cast

幾乎復制代碼:

auto t1 = std::chrono::high_resolution_clock::now();
// Call your child process here
auto t2 = std::chrono::high_resolution_clock::now();
std::cout << "Child process took "
          << std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count()
          << " milliseconds\n";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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