什麼是「自我」和「全部」列? 「總計」列不會達到100%(更高),看起來像自己。我懷疑自己是非累積性的,總數是。因此,如果methodA調用methodB調用methodC,則在self ID中可以單獨查看每個方法調用的%,而在總方法中,將顯示所有三個方法的總和,methodB將顯示2,依此類推。webkit profiler
這是正確的嗎?
什麼是「自我」和「全部」列? 「總計」列不會達到100%(更高),看起來像自己。我懷疑自己是非累積性的,總數是。因此,如果methodA調用methodB調用methodC,則在self ID中可以單獨查看每個方法調用的%,而在總方法中,將顯示所有三個方法的總和,methodB將顯示2,依此類推。webkit profiler
這是正確的嗎?
假設有此程序:
main()調用A()調用B()調用C(),和C在10秒的循環掛起。 的CPU-分析器會說這樣的事情:
total time: 10 sec
routine self% inclusive%
main 0 100
A 0 100
B 0 100
C 100 100
C的自我時間爲10秒,100%。其他人的自我時間基本爲零。
其中每一個的總(含)時間將是10秒或100%。你不要添加這些。
另一方面,假設C花了10秒做I/O。 那麼唯一的CPU-分析器會說這樣的事情:
total time: 0 sec
routine self% inclusive%
main ? ?
A ? ?
B ? ?
C ? ?
,因爲它使用的唯一實際的CPU時間很短,基本沒有樣品打它,所以要得到它除以零的百分比。
OTOH如果樣品在掛鐘時間,您將獲得第一個輸出。
更好的探查器類型是在掛鐘時間對採樣堆棧進行採樣,並將包含時間作爲總數的百分比,並在代碼行級別將其提供給您,而不僅僅是函數。這很有用,因爲這是直接測量如果線條執行得少的話可以節省多少,幾乎沒有問題可以隱藏起來。這種分析器的例子是Zoom和LTProf,我被告知OProfile可以做到這一點。有a simple method可以與任何語言一起使用,只需要一個調試器。