共用方式為


/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 編譯器命令列語法