/GL (整個程式最佳化)
啟用整個程式最佳化。
/GL[-]
備註
整個程式最佳化可以讓編譯器以程式中所有模組的資訊執行最佳化。 如果不使用整個程式最佳化,最佳化將是以每一模組 (編譯) 的方式進行。
整個程式最佳化預設為關閉,且必須是明確啟用; 儘管如此,仍然可以用 /GL- 來明確地加以停用。
使用所有模組的資訊,編譯器可以:
使暫存器的使用跨函式界限最佳化。
對全域資料執行更好的追蹤修改,使得載入和存放區的數目能夠縮減。
對以指標取值修改的可能項目集合進行更好的追蹤,以縮減載入和存放區的數目。
將函式內嵌於模組,即使該函式是定義於另一個模組中。
利用 /GL 產生的 .obj 檔案不能供 EDITBIN 和 DUMPBIN 這類連結器公用程式使用。
如果利用 /GL 和 /c 編譯程式,應該要使用 /LTCG 連結器選項建立輸出檔。
/ZI 無法與 /GL 一起使用
以目前版本的 /GL 產生的檔案格式不一定能由後續版本的 Visual C++ 讀取。 除非您願意針對使用者可能會使用的所有 Visual C++ 版本 (不論現在或將來) 交運 .lib 檔案複本,否則不應該交運以 /GL 所產生之 .obj 檔案構成的 .lib 檔案。
以 /GL 和先行編譯標頭檔產生的 .obj 檔案不應用來建置 .lib 檔案,除非這個 .lib 檔案將在產生 /GL 檔案的同一部電腦上進行連結。 在連結時將會需要來自 .obj 檔案的先行編譯標頭檔資訊。
如需可用的最佳化和整個程式最佳化限制的詳細資訊,請參閱 / LTCG。 /GL 也可使用特性指引最佳化;請參閱 /LTCG。 為特性指引最佳化進行編譯時,如果要函式從特性指引最佳化排列順序,必須以 /Gy 或隱含 /Gy 的編譯器選項進行編譯。
在 Visual Studio 開發環境中設定這個連結器選項
- 請參閱 /LTCG (連結時間產生程式碼),取得如何在開發環境中指定 /GL 的詳細資訊。