共用方式為


/Og (全域優化)

已取代。 提供本機和全域優化、自動註冊配置和迴圈優化。 建議您改用 /O1 [最小化大小] /O2 [最大化速度]。

語法

/Og

備註

/Og 已被取代。 啟用任何優化時,預設會啟用這些優化。 如需優化的詳細資訊,請參閱 /O1/O2 (最小化大小、最大化速度) /Ox (啟用最多速度優化)。

下列優化可在 下 /Og 取得:

  • 本機和全域通用子運算式消除

    在此優化中,一般子運算式的值會計算一次。 在下列範例中,如果 和 的值 b 在三個運算式之間沒有變更,編譯器可以將 的計算 b + c 指派給暫存變數,並將該變數用於 b + cc

    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;
    }
    

    當編譯器無法假設沒有使用 、 noaliasrestrict 設定 __restrict 的別名時,迴圈優化會更有效率。

    注意

    您可以使用 pragma 搭配 g 選項,在函式的基礎上 optimize 啟用或停用全域優化。

如需相關資訊,請參閱 /Oi (產生內建函式) /Ox (啟用大多數速度優化)。

在 Visual Studio 開發環境中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. 在 [ 其他選項 ] 方塊中輸入編譯器選項。

若要以程式方式設定這個編譯器選項

另請參閱

MSVC 編譯器命令列語法