簡體   English   中英

如何解釋kcachegrind的結果

[英]How to interpret results from kcachegrind

誰能告訴我如何對kcachegrind的結果感興趣。

我有兩個版本的代碼(v1,v2)都在調試模式下編譯。 我通過valgrind用選項運行它們:

valgrind --tool=callgrind -v ....

這樣生成的輸出文件在kcachegrind中打開。 現在我已經發現代碼的版本v2運行速度比第一版v1更快,因為它意味着。 但是我如何從kcachegrind的調用圖中獲得結果。

在kcachegrind All Callers選項卡中,我有以下列: Incl. , Distance, Called, Caller Incl. , Distance, Called, Caller

IIUC, Calledcaller者在節目中被稱為“來電者”。 但我不了解其他人。

另一件事是在選擇特定功能然后在“呼叫者”選項卡上顯示更多信息。 Ir, Ir per call, count, caller和types選項卡:`EventType,Incl。 自我,簡短,公式。

我在這里沒有任何想法。

到目前為止,我讀過這些問題:

KCachegrind解釋混淆 對分析結果 感到 困惑

我使用QCacheGrind,所以如果屏幕上的內容與您看到的內容不完全相符,我深表歉意。 據我所知,QCacheGrind是KCacheGrind的直接Qt端口。 此外,我還能夠在指令計數和總指令的百分比之間切換。 為了保持一致性,我將參考任何可以這種方式切換的列的指令計數視圖。

“所有呼叫者”選項卡列應表示以下內容:

  • Incl。:每個調用者對此函數整體生成的指令數進行細分。 因為調用者是層次結構(因此是距離列),所以如果調用堆棧很深,則可能有幾個具有相同的值。

  • 距離:分隔的函數調用數是從“平面縱斷面”面板中選擇的函數中選定的行。

  • 調用:調用者調用最終導致執行所選函數的函數的時間數。

  • 調用者:直接調用或調用所選函數的另一個調用者的函數(由Distance確定)。

“呼叫者”選項卡更簡單。 它顯示與所選功能的距離為1的函數。 換句話說,這些是直接調用所選函數的函數。

  • Ir:此調用者調用后由所選函數執行的指令總數。

  • 每次通話:每次通話執行的指令數。

  • 計數:調用者調用所選函數的次數。

  • 調用者:直接調用所選函數的函數。

有關活動,請參閱頁面以獲取該手冊。 我懷疑如果你沒有定義自己的類型,你應該看到的是“指令獲取”,可能還有“周期估計”。 這些列的快速細分如下:

  • Incl。:再次由此函數執行的總指令以及它在其下面調用的所有函數。

  • Self:由此功能專門執行的指令。 此計數器僅跟蹤此函數使用的指令,而不跟蹤此函數調用的函數使用的任何指令。

  • 短和公式:定義自定義事件類型時使用這些列。 你的應該是空白或非常短(如CEst = Ir),除非你最終定義自己的類型。

暫無
暫無

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

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