/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。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應