/Og
(Global Optimizations)
Deprecated. Provides local and global optimizations, automatic-register allocation, and loop optimization. We recommend you use either /O1
(Minimize Size) or /O2
(Maximize Speed) instead.
Syntax
/Og
Remarks
/Og
is deprecated. These optimizations are now enabled by default when any optimizations are enabled. For more information on optimizations, see /O1
, /O2
(Minimize Size, Maximize Speed), or /Ox
(Enable Most Speed Optimizations).
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
b
andc
don't change between the three expressions, the compiler can assign the calculation ofb + c
to a temporary variable, and use that 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
register
keyword is ignored by default, and causes a diagnostic under/std:c++17
or later.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 + y
doesn't change in the loop body:i = -100; while( i < 0 ) { i += x + y; }
After optimization,
x + y
is 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
, orrestrict
.Note
You can enable or disable global optimization on a function-by-function basis using the
optimize
pragma together with theg
option.
For related information, see /Oi
(Generate intrinsic functions) and /Ox
(Enable most speed optimizations).
To set this compiler option in the Visual Studio development environment
Open the project's Property Pages dialog box. For details, see Set C++ compiler and build properties in Visual Studio.
Select the Configuration Properties > C/C++ > Command Line property page.
Enter the compiler option in the Additional Options box.
To set this compiler option programmatically
- See AdditionalOptions.