使用編譯器報告來診斷最佳化機會
您可以使用 -qlistfmt 選項,以 XML 或 HTML 格式產生編譯器報告。 它提供如何最佳化程式的相關資訊。 您也可以使用 genhtml 公用程式,將現有的 XML 報告轉換成 HTML 格式。 此資訊可協助您瞭解應用程式碼並調整程式碼,以取得更好的效能。
可以在支援 XSLT 的瀏覽器中檢視 XML 格式的編譯器報告。 如果您使用 stylesheet 子選項 (例如 -qlistfmt=xml=all:stylesheet=xlstyle.xsl) 進行編譯,則報告包含呈現 XML 可讀取之樣式表的鏈結。 透過閱讀報告,您可以偵測到進一步最佳化程式碼的機會。 您也可以建立工具來剖析此資訊。
依預設,報告的名稱為 a.xml (代表 XML 格式) , a.html (代表 HTML 格式)。 您可以使用 -qlistfmt=xml=filename 或 -qlistfmt=html=filename 選項來置換預設名稱。
行內報告
如果您使用 -qinline 及 -qlistfmt=xml=inlines、 -qlistfmt=html=inlines、 -qlistfmt=xml或 -qlistfmt=html其中之一進行編譯,則產生的編譯器報告包括編譯期間的行內嘗試清單。 報告也會指定嘗試的類型及其結果。
- FunctionTooBig-函數太大而無法列入。
- RecursiveCall -函數未列入,因為它是遞迴的。
- ProhibitedBy因為使用者指定的 pragma 或指引,未執行使用者列入。
- CallerIsNoopt-未執行列入,因為呼叫程式編譯時沒有最佳化。
- WeakAndNotExplicitly列入-呼叫函數弱且未標示為列入。
如需可能的 原因的完整清單,請參閱 /opt/IBM/xlf/16.1.0/listings/ 目錄中 XML 綱目說明檔 名稱為 XMLContent.html 的 Inline optimization
types 一節。 說明檔的日文及中文版本 XMLContent-Japanese.utf8.html 及 XMLContent-Chinese.utf8.html也包含在此目錄中。
迴圈轉換
- 迴圈無法自動平行化的原因
- 無法解除捲動迴圈的原因
- SIMD 向量化失敗的原因
如需可能的轉換問題完整清單,請參閱 /opt/IBM/xlf/16.1.0/listings/ 目錄中 XML 綱目說明檔 已命名 XMLContent.html 的 Loop transformation
types 一節。
資料重組
- 陣列分割
- 陣列聯合
- 陣列交錯
- 陣列換位
- 共用區塊分割
- 記憶體合併
對於其中每一個重組,報告包含資料名稱、檔名、行號及區域名稱的詳細資料。
設定檔導向的意見回饋報告
- 迴圈反覆運算計數
- 封鎖及呼叫計數
- 快取遺失 (如果使用 -qpdf1=level=2編譯)