KCachegrind中的所有可視化都以當前選定的函數爲中心,這裏是Symbol::byte_at()
。通常,所選函數的百分比數字與總成本(有史以來的運行時間/週期)相關。但是,如果啓用模式/工具按鈕「相對於父級」,則調用圖表中的百分比數字會「縮小」以顯示所選功能的100%,以便更容易查看其他功能花費的比例,相對於所選的一個。
我們假設成本(即在KCachegrind中選擇的事件類型)是時間(以CPU週期或毫秒爲單位 - 與百分比無關)。這使得它可能更易於理解。
呼叫圖表中的百分比總是顯示在某個給定函數花費而選擇的功能(Symbol::byte_at
)是活躍,即時間。在程序運行期間可以在調用堆棧中找到這兩個函數的時間。這適用於被叫方向(向下Symbol::byte_at()
)和來電方向(向上Symbol::byte_at()
)。
向下,這更容易理解:雖然Symbol::byte_at()
處於活動狀態,但該處理器實際上正在執行代碼的時間的百分比爲24.14%,這些代碼從Symbol::base()
開始執行。另一次(100% - 24.14%),Symbol::byte_at()
本身的代碼正在運行。
在所選功能的上方,它可能有點棘手。 例如,SignatureIterator::iterate_parameters()
的9.25%表示在Symbol::byte_at()
處於活動狀態的時間內,其間的9.25%是間接從SignatureIterator::iterate_parameters()
調用的時間。同樣,Symbol::byte_at()
被稱爲從SignatureIterator::parse_type()
直接運行的時間的11.27%。也就是說,在所選函數的上方,函數的直接父項中的百分比總是與該函數的確切百分比相加,除非由於低於可見性閾值(請參見上下文菜單)而使功能從可視化中斷, 。
函數A調用函數B之間的距離是A-> C-> T-> B之間的子函數的數量,在這種情況下A和B之間的距離是2. – Bionix1441