「由上往下」和「由下往」的圖表

「Top Down」分頁會列出呼叫,該清單可展開方法或函式節點以顯示受呼叫端。圖 2 顯示下列呼叫圖的「Top Down」圖。圖表中的每個箭頭分別指向呼叫端和受呼叫端。

圖 1. 呼叫圖範例說明了方法 D 的自身時間、子項時間和總時間。

如圖 2 所示,在「Top Down」分頁中展開方法 A 的節點,即可顯示其受呼叫端、方法 B 和 D。之後,延伸方法 D 的節點會公開其受呼叫端,例如方法 B 和 C。類似於「Flame Chart」分頁,「Top Down」樹狀結構會聚集共用相同呼叫堆疊的相同方法的追蹤記錄資訊。也就是說,「Flame Chart」分頁以圖形的方式呈現「Top Down」分頁。

「Top Down」分頁提供以下資訊,以說明每個呼叫所消耗的 CPU 作業時間 (時間也會以執行緒在所選範圍內的總時間百分比表示):

  • 「Self」方法或函式呼叫執行專屬程式碼的時間,而非受呼叫端的時間,如圖 1 中方法 D 所示。
  • 「Children」方法或函式呼叫執行受呼叫端的時間,而非其自身程式碼的時間,如圖 1 中方法 D 所示。
  • 「Total」:該方法「Self」和「Children」的時間總和。這代表應用程式執行呼叫的總時間,如圖 1 中方法 D 所示。

圖 2. 「Top Down」樹狀圖。

圖 3. 圖 5 中方法 C 的「Bottom Up」樹狀圖。

「Bottom Up」分頁會顯示呼叫清單,展開其中的函式或方法節點後,即可顯示相應呼叫端。使用圖 2 中顯示的追蹤記錄範例,圖 3 提供了方法 C 的「Bottom Up」樹狀圖。在「Bottom Up」樹狀圖中開啟方法 C 的節點,會顯示各自不重複的呼叫端,亦即方法 B 和 D。請注意,雖然 B 呼叫了 C 兩次,但 B 在「Bottom Up」樹狀圖中展開方法 C 的節點時只會出現一次。之後,展開 B 節點即可顯示呼叫端 A 和方法 D。

「Bottom Up」分頁可用來依照耗費最多(或最少)CPU 作業時間將方法或函式排序。您可以查看每個節點,以判斷哪些呼叫端花費最多的 CPU 作業時間叫用這些方法或函式。相較於「Top Down」樹狀結構,「Bottom Up」樹狀結構每種方法或函式的時間資訊指的是每個樹狀結構頂端的方法 (頂端節點)。CPU 作業時間也代表記錄在錄音期間的總使用時間百分比。下表說明如何解讀熱門節點及其呼叫端 (子節點) 的時間資訊。

自身時間 子項時間 總計
在「Bottom Up」樹狀圖頂端 (頂端節點) 的方法或函式 代表方法或函式執行程式碼 (而非受呼叫者) 的總時間長度。相較於「Top Down」樹狀圖,此時間資訊代表在記錄期間,對這個方法或函式發出的所有呼叫總數。 代表方法或函式執行呼叫端的總時間長度,而非其程式碼。相較於「Top Down」樹狀圖,這項時間資訊代表在這段錄製期間,對這個方法或函式的呼叫端的所有呼叫總和。 自身時間和子項時間的總和。
呼叫端 (子節點) 代表受呼叫者被呼叫端呼叫的總時間。以圖 6 的「Bottom Up」樹狀圖為例,方法 B 的自身時間將等於方法 C 被 B 呼叫時,每次執行的自身時間總和。 代表呼叫端叫用時受呼叫者的子項總時長。以圖 6 的「Bottom Up」為例,方法 B 的子項時間將等於方法 C 被 B 呼叫時,每次執行的子項時間總和。 自身時間和子項時間的總和。

注意:對於錄音檔,當分析器的檔案大小達到該上限,Android Studio 就會停止收集新資料 (但並不會停止錄製)。執行追蹤記錄時,通常會更快完成這項作業,因為相較於取樣追蹤記錄,這種類型的追蹤記錄會在較短的時間內收集更多資料。如果您將檢查時間延伸至上限後產生的記錄時段,追蹤記錄窗格中的時間資料並不會改變 (因為沒有可用的新資料)。此外,如果您選取的記錄檔資料中沒有可用的資料,追蹤記錄窗格會顯示時間資訊的「NaN」