[英]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, Called
和caller
者在節目中被稱為“來電者”。 但我不了解其他人。
另一件事是在選擇特定功能然后在“呼叫者”選項卡上顯示更多信息。 Ir, Ir per call, count, caller
和types選項卡:`EventType,Incl。 自我,簡短,公式。
我在這里沒有任何想法。
到目前為止,我讀過這些問題:
我使用QCacheGrind,所以如果屏幕上的內容與您看到的內容不完全相符,我深表歉意。 據我所知,QCacheGrind是KCacheGrind的直接Qt端口。 此外,我還能夠在指令計數和總指令的百分比之間切換。 為了保持一致性,我將參考任何可以這種方式切換的列的指令計數視圖。
“所有呼叫者”選項卡列應表示以下內容:
Incl。:每個調用者對此函數整體生成的指令數進行細分。 因為調用者是層次結構(因此是距離列),所以如果調用堆棧很深,則可能有幾個具有相同的值。
距離:分隔的函數調用數是從“平面縱斷面”面板中選擇的函數中選定的行。
調用:調用者調用最終導致執行所選函數的函數的時間數。
調用者:直接調用或調用所選函數的另一個調用者的函數(由Distance確定)。
“呼叫者”選項卡更簡單。 它顯示與所選功能的距離為1的函數。 換句話說,這些是直接調用所選函數的函數。
Ir:此調用者調用后由所選函數執行的指令總數。
每次通話:每次通話執行的指令數。
計數:調用者調用所選函數的次數。
調用者:直接調用所選函數的函數。
有關活動,請參閱此頁面以獲取該手冊。 我懷疑如果你沒有定義自己的類型,你應該看到的是“指令獲取”,可能還有“周期估計”。 這些列的快速細分如下:
Incl。:再次由此函數執行的總指令以及它在其下面調用的所有函數。
Self:由此功能專門執行的指令。 此計數器僅跟蹤此函數使用的指令,而不跟蹤此函數調用的函數使用的任何指令。
短和公式:定義自定義事件類型時使用這些列。 你的應該是空白或非常短(如CEst = Ir),除非你最終定義自己的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.