火焰圖

「Flame Chart」分頁會提供反轉的呼叫圖,以聚合相同的呼叫堆疊。也就是說,共享相同呼叫者順序的相同方法或函式會被收集起來,並在火焰圖中以一個長條表示(而非如同呼叫圖的多個短條)。如此一來,您就能更輕鬆地查看哪些方法或函式花費的時間最多。但這也表示水平軸並不代表時間軸,而是會指出每個方法或函式執行所需的相對時間。

建議您查看圖 1 的呼叫圖,來瞭解這個概念。請注意,方法 D 向 B 發出多次呼叫 (B1、B2 和 B3),以及部分 D 對 B 發出的呼叫都會呼叫 C (C1 和 C3)。

圖 1. 具多個方法呼叫的呼叫圖,這些方法共享一個常見的呼叫端序列。

因為 B1、B2 和 B3 會共用相同的呼叫端序列 (A → D → B),如圖 2 所示。同樣地,C1 和 C3 也會累加在一起,因爲共用相同的呼叫端序列 (A → D → B → C);請留意到 C2 包含不同的呼叫端順序 (A → D → C),因此未包含在內。

圖 2. 聚合共用相同呼叫堆疊的相同方法。

使用聚合呼叫建立火焰圖,如圖 3 所示。請注意,對於火焰圖中的特定呼叫,會優先佔用最多 CPU 作業時間的呼叫端。

圖 3. 圖 5 中呼叫圖的火焰示意圖。