| title | -Og (Global Optimizations) | Microsoft Docs | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ms.custom | ||||||||||
| ms.date | 11/04/2016 | |||||||||
| ms.reviewer | ||||||||||
| ms.suite | ||||||||||
| ms.technology |
|
|||||||||
| ms.tgt_pltfrm | ||||||||||
| ms.topic | article | |||||||||
| f1_keywords |
|
|||||||||
| dev_langs |
|
|||||||||
| helpviewer_keywords |
|
|||||||||
| ms.assetid | d10630cc-b9cf-4e97-bde3-8d7ee79e9435 | |||||||||
| caps.latest.revision | 17 | |||||||||
| author | corob-msft | |||||||||
| ms.author | corob | |||||||||
| manager | ghogen | |||||||||
| translation.priority.ht |
|
|||||||||
| translation.priority.mt |
|
Deprecated. Provides local and global optimizations, automatic-register allocation, and loop optimization.
/Og
/Og is deprecated. These optimizations are now generally enabled by default. For more information on optimizations, see /O1, /O2 (Minimize Size, Maximize Speed) or /Ox (Full Optimization).
The following optimizations are available under /Og:
-
Local and global common subexpression elimination
In this optimization, the value of a common subexpression is calculated once. In the following example, if the values of
bandcdo not change between the three expressions, the compiler can assign the calculation ofb + cto a temporary variable, and substitute the variable forb + c:a = b + c; d = b + c; e = b + c;For local common subexpression optimization, the compiler examines short sections of code for common subexpressions. For global common subexpression optimization, the compiler searches entire functions for common subexpressions.
-
Automatic register allocation
This optimization allows the compiler to store frequently used variables and subexpressions in registers; the
registerkeyword is ignored. -
Loop optimization
This optimization removes invariant subexpressions from the body of a loop. An optimal loop contains only expressions whose values change through each execution of the loop. In the following example, the expression
x + ydoes not change in the loop body:i = -100; while( i < 0 ) { i += x + y; }After optimization,
x + yis calculated once rather than every time the loop is executed:i = -100; t = x + y; while( i < 0 ) { i += t; }Loop optimization is much more effective when the compiler can assume no aliasing, which you set with __restrict, noalias, or restrict.
[!NOTE] You can enable or disable global optimization on a function-by-function basis using the
optimizepragma with thegoption.
/Og also enables the Named Return Value optimization, which eliminates the copy constructor and destructor of a stack based return value. See /O1, /O2 (Minimize Size, Maximize Speed) for more information.
For related information, see Generate Intrinsic Functions (/Oi) and Full Optimization (/Ox).
-
Open the project's Property Pages dialog box. For details, see Working with Project Properties.
-
Click the C/C++ folder.
-
Click the Command Line property page.
-
Type the compiler option in the Additional Options box.
- See xref:Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool.AdditionalOptions%2A.
/O Options (Optimize Code)
Compiler Options
Setting Compiler Options