/Og
(全域優化)
已取代。 提供本機和全域優化、自動註冊配置和循環優化。 建議您改用 /O1
[最小化大小] 或 /O2
[最大化速度]。
語法
/Og
備註
/Og
已被取代。 啟用任何優化時,預設會啟用這些優化。 如需優化的詳細資訊,請參閱 /O1
、 /O2
(最小化大小、最大化速度)或/Ox
(啟用最多速度優化)。
下列優化可在 下 /Og
取得:
本機和全域通用子表達式消除
在此優化中,一般子表達式的值會計算一次。 在下列範例中,如果和的值
b
在三個表達式之間沒有變更,編譯程式可以將的計算b + c
指派給暫存變數,並將該變數用於b + c
:c
a = b + c; d = b + c; e = b + c;
針對本機通用子表示式優化,編譯程式會檢查一般子表達式的程式代碼簡短區段。 針對全域通用子運算式優化,編譯程式會搜尋整個函式中的常見子表達式。
自動快取器配置
此優化可讓編譯程式在緩存器中儲存常用的變數和子表達式。 默認
register
會忽略 關鍵詞,並在或更新版本下/std:c++17
造成診斷。迴圈最佳化
此優化會從迴圈主體中移除非變異子表達式。 最佳迴圈只包含表達式,其值會透過迴圈的每個執行而變更。 在下列範例中,表達式
x + y
不會在迴圈主體中變更:i = -100; while( i < 0 ) { i += x + y; }
優化之後,
x + y
會計算一次,而不是每次執行循環時:i = -100; t = x + y; while( i < 0 ) { i += t; }
當編譯程式無法假設沒有使用、
noalias
或restrict
設定__restrict
的別名時,迴圈優化會更有效率。注意
您可以使用 pragma 搭配
g
選項,在函式的基礎上optimize
啟用或停用全域優化。
如需相關信息,請參閱/Oi
(產生內部函數)和/Ox
(啟用大多數速度優化)。
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
在 [ 其他選項 ] 方塊中輸入編譯程序選項。
若要以程式方式設定這個編譯器選項
- 請參閱 AdditionalOptions。