簡體   English   中英

traceview中的Incl CPU Time、Excl CPU Time、Incl Real CPU Time、Excl Real CPU Time是什么意思?

[英]What is the meaning of Incl CPU Time, Excl CPU Time, Incl Real CPU Time, Excl Real CPU Time in traceview?

1) 獨占時間是在方法中花費的時間 2) 包含時間是在方法中花費的時間加上在任何被調用函數中花費的時間 3) 我們將調用方法稱為“父類”,將被調用方法稱為“子類”。 參考鏈接: 點此

這里的問題是:

有什么區別

  • 包括 CPU 時間和實際 CPU 時間?
  • 不包括 CPU 時間和不包括實際 CPU 時間?

在我的 Method1() 的一個示例跟蹤文件中:包括 CPU 時間 = 242 毫秒和包括實際 CPU 時間 = 5012 毫秒

  • 我無法確定 5012-242 = 4770 毫秒差距背后的原因。

如果您有任何想法,請幫助我。

這是DDMS文檔

包含CPU時間是包含的CPU時間。 它是函數本身所花費的時間的總和, 以及 它調用所有函數的時間總和。

Excl CPU時間是獨占的CPU時間。 它只是在函數本身花費的時間。 你會發現它總是與“自我”孩子的“包含時間”相同。

文檔沒有說明CPU時間實時之間的差異,但我同意Neetesh的說法,CPU時間是函數實際運行的時間(這不包括等待IO),實時是掛鍾時間(這將包括做IO的時間)。

cpu time是進程使用cpu和cpu的時間實時是從進程開始到進程結束的總時間,它包括進程執行的等待時間。

從.trace的源代碼中,你可以看到cpu時間細節與實際cpu時間不同,它與android doc的描述相同:CPU時間只考慮線程主動使用CPU時間的時間,而實際time提供從應用程序進入方法到退出該方法的絕對時間信息 - 無論線程是活動還是休眠。

正如克里斯和大衛所說,我做了一個測試。

#include <unistd.h>

#define S ((long long)1000 * 1000 * 1000)

// My CPU frequency is 3 GHz
void run()  {
    for (int i = 0; i < S; ++i);
}

void g() {
    run();
    run();
    run();

    for (int i = 0; i < S; ++i);
}

int main() {
    g();
    // run();

    return 0;
}

可以看到,function g的包含時間為 8 秒,獨占時間為 2 秒: 中央處理器時間

暫無
暫無

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

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