檢視建置報告中的效能分析

效能分析在原生映像檔的有效 AOT 編譯中扮演著至關重要的角色。它包含關於應用程式特定執行的資訊,並用於引導額外的最佳化,以進一步提升應用程式效能。視覺化效能分析中的資訊通常很有用。本節說明如何使用原生映像檔的建置報告工具來檢視效能分析的部分內容。

原生映像檔的建置報告工具在 GraalVM 社群版中不可用。

產生效能分析視覺化 #

建置報告工具會顯示有關已產生映像檔和建置過程本身的各種資料。除其他事項外,該工具可以視覺化取樣器記錄的效能分析資訊,這對於探索不同的方法如何影響整體執行時間很有用。樣本會彙總成單一的火焰圖。火焰圖會以顏色編碼,以顯示內聯器在編譯期間如何做出內聯決策 (稍後會詳細說明)。

若要產生包含視覺化的完整報告,請在您建置 PGO 最佳化原生可執行檔的步驟中傳遞 --emit build-report 選項。例如

native-image -cp . GameOfLife -o gameoflife-pgo --pgo=gameoflife.iprof --emit build-report

請參閱Profile-Guided Optimization 的基本使用方式,以取得逐步指南。

使用建置報告檢視效能分析 #

原生映像檔取樣器記錄的效能分析資訊會以火焰圖的形式視覺化,火焰圖是一種彙總多個堆疊追蹤的階層式圖表。這個火焰圖專用於區分「熱」編譯單元和「冷」編譯單元。共有三種不同的顏色

  • 紅色:用於標記熱編譯單元的根方法;
  • 藍色:用於所有內嵌到熱編譯根的方法;
  • 灰色:表示「冷」程式碼。

注意:顏色描述和其他有用的資訊是圖表圖例的一部分,可以透過按一下「?」來切換顯示與否。

Flame Graph Preview

圖表本身提供了一些功能。使用者可以將滑鼠游標停留在特定的方法條上,以查看有關該方法的更多資訊,例如,樣本數量以及與樣本總數相關的百分比。除此之外,還可以「放大」到特定方法 (按一下它) 並更清楚地查看該呼叫鏈中的所有後續呼叫。可以使用左上角的重設縮放按鈕來重設檢視。

Flame Graph Zoom

此外,圖表的右上角有一個搜尋按鈕 (搜尋)。它可以用於醒目提示符合搜尋條件的特定方法或方法群組 (方法將以黃色著色)。此外,還有一個已符合欄位,表示群組在樣本總數中的佔比 (顯示在圖表右半部分的下方)。請注意,這也是一個相對佔比,當展開/摺疊檢視時,它會重新調整。也可以使用重設搜尋按鈕隨時取消搜尋。

Flame Graph Search

火焰圖還附帶一個額外的直方圖 (在其下方)。它顯示了個別方法對總執行時間的貢獻 (按樣本數量遞減)。這些長條也是可按一下的,按一下的效果與搜尋相同 - 它會醒目顯示上方火焰圖中的特定方法。再次按一下同一個長條會重設醒目提示。

Histogram Highlight

延伸閱讀 #

與我們聯繫