共用方式為


/Og (全域最佳化)

提供區域和全域最佳化、自動暫存器配置以及迴圈最佳化。 已被取代。

/Og

備註

下列是可用的最佳化:

  • 區域和全域通用子運算式 (Subexpression) 刪除

    在這項最佳化中,通用子運算式的值只會被計算一次。 在下列範例中,如果 b 和 c 的值在三個運算式中沒有變更,編譯器可以將 b + c 計算指派給一個暫時變數,並且用這個變數代替 b + c:

    a = b + c;
    d = b + c;
    e = b + c;
    

    對於區域通用子運算式最佳化,編譯器會檢查程式碼的短區段中有沒有通用子運算式。 對於全域通用子運算式最佳化,編譯器會搜尋整個函式中有沒有通用子運算式。

  • 自動暫存器配置

    這項最佳化會讓編譯器將常用的變數和子運算式儲存在暫存器中;register 關鍵字會被忽略。

  • 迴圈最佳化

    這項最佳化會從迴圈主體中移除不變量子運算式。 理想的迴圈應該只包含值會隨著每次迴圈執行而改變的運算式。 在下列範例中,運算式 x + y 並不會在迴圈主體中改變:

    i = -100;
    while( i < 0 ) {
        i += x + y;
    }
    

    經過最佳化後, x + y 只會計算一次而不是在每次迴圈執行時都要計算:

    i = -100;
    t = x + y;
    while( i < 0 ) {
        i += t;
    }
    

    如果編譯器可以假設沒有別名 (以 __restrictnoaliasrestrict 進行設定),則迴圈最佳化顯然會比較有效。

    注意事項注意事項

    您可以使用 optimize Pragma 配合 g 選項對每個函式逐一啟用或停用全域最佳化。

/Og 也會啟用「指名傳回值」最佳化,以排除堆疊式傳回值的複製建構函式和解構函式。 如需詳細資訊,請參閱 /O1、/O2 (最小大小、最快速度)

如需相關資訊,請參閱產生內建函式 (/Oi)完全最佳化 (/Ox)

/Og已被取代;請使用 /O1/O2。 如需詳細資訊,請參閱Visual C++ 2005 中已被取代的編譯器選項

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

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資訊,請參閱 HOW TO:開啟專案屬性頁

  2. 按一下 [C/C++] 資料夾。

  3. 按一下 [命令列] 屬性頁。

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

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

請參閱

參考

/O 選項 (最佳化程式碼)

編譯器選項

設定編譯器選項