火焰圖
Cloud Profiler 會使用火焰圖顯示剖析資料。與樹狀圖和圖表不同,火焰圖以簡潔易讀的格式呈現大量資訊,因此可有效運用螢幕空間。
為了介紹火焰圖,本頁會說明如何將樹狀圖轉換為火焰圖,並簡要說明火焰圖的主要功能。
建立火焰圖
如要從樹狀圖建立火焰圖,請完成下圖所示步驟:
 
- 從樹狀圖中移除表示函式呼叫的箭頭。 
- 將每個樹狀結構節點替換為畫格。 - 影格為矩形,且所有影格高度相同。以本頁範例來說,畫格中所命名函式使用的 CPU 作業時間總計,會決定畫格寬度。 - 下表說明各函式的擬似程式碼。在函式執行期間執行的 CPU 密集工作會定義自我 CPU 作業時間: - 函式虛擬程式碼 - 自身 CPU 時間 
 (秒)- 總 CPU 時間 
 (秒)- func main(): foo1() foo2() // CPU intensive work // for 2 seconds- 2 - 4 + 3 + 2 = 9 - func foo1(): bar() // CPU intensive work // for 1.5 seconds- 1.5 - 2.5 + 1.5 = 4 - func foo2(): bar() // CPU intensive work // for 0.5 seconds- 0.5 - 2.5 + 0.5 = 3 - func bar(): // CPU intensive work // for 2.5 seconds- 2.5 - 2.5 
- 接下來,請移除畫面之間的垂直間距,並保留呼叫序列,同時將畫面左對齊。您可以選擇定義色彩配置,並根據定義為影格著色。舉例來說,您可以依包裝、總 CPU 時間、自我 CPU 時間或其他指標為影格著色。 - 移除多餘的空白並依 CPU 時間為影格著色後,火焰圖現在會顯示如下: - 請注意,即使以 - foo2開頭的呼叫堆疊現在位於- foo1影格的旁邊,- foo1和- foo2的呼叫堆疊仍會保留。
摘要
以下簡單範例說明以下內容:
- 火焰圖是樹狀結構的簡潔表示法,您可以從上到下追蹤影格,重新建立呼叫堆疊。
- 框架會命名函式,而框架寬度則是該函式總 CPU 作業時間的相對測量值。在這個範例中,由於 foo2的 CPU 總時間是main的三分之一,因此foo2的畫面寬度是main的三分之一。
- 影格下方空白區域的寬度,是影格中所述函式自我 CPU 時間的相對測量值。舉例來說,在框架 foo1下方,有 1.5 個單位是空白的,而 2.5 個單位由bar佔用。因此,foo1的 CPU 自我時間為其 CPU 總時間的 37.5%,即 1.5 秒。
- 隨著您追蹤呼叫堆疊,影格寬度會減少,因為呼叫目標的 CPU 總時間絕不會超過呼叫端的 CPU 總時間。這就是產生火焰形狀的原因。 - 在這個範例中, - foo1會呼叫- bar,而- foo1的 CPU 總時間定義為- bar的 CPU 總時間加上- foo1的自我 CPU 時間。因此,- bar的 CPU 總時間不得超過- foo1的 CPU 總時間。