/Og
(Optimizaciones globales)
Obsoleto. Proporciona optimizaciones locales y globales, asignación automática de registros y optimización de bucles. Se recomienda usar /O1
(Minimizar tamaño) o /O2
(Maximizar velocidad) en su lugar.
Sintaxis
/Og
Comentarios
/Og
está en desuso. Estas optimizaciones ahora están habilitadas de forma predeterminada cuando se habilitan las optimizaciones. Para obtener más información sobre las optimizaciones, vea /O1
, /O2
(Minimizar tamaño, Maximizar velocidad) o /Ox
(Habilitar la mayoría de las optimizaciones de velocidad).
Las siguientes optimizaciones están disponibles en /Og
:
Eliminación de subexpresión común local y global
En esta optimización, el valor de una subexpresión común se calcula una vez. En el ejemplo siguiente, si los valores de
b
yc
no cambian entre las tres expresiones, el compilador puede asignar el cálculo deb + c
a una variable temporal y usar esa variable parab + c
:a = b + c; d = b + c; e = b + c;
Para la optimización de subexpresión común local, el compilador examina secciones cortas del código para subexpresiones comunes. Para la optimización global de subexpresión común, el compilador busca en subexpresiones comunes funciones completas.
Asignación automática de registro
Esta optimización permite al compilador almacenar variables y subexpresiones usadas con frecuencia en registros. La palabra clave
register
se omite de forma predeterminada y provoca un diagnóstico en/std:c++17
o posterior.Optimización del bucle
Esta optimización quita subexpresiones invariables del cuerpo de un bucle. Un bucle óptimo contiene solo expresiones cuyos valores cambian a través de cada ejecución del bucle. En el ejemplo siguiente, la expresión
x + y
no cambia en el cuerpo del bucle:i = -100; while( i < 0 ) { i += x + y; }
Después de la optimización,
x + y
se calcula una vez en lugar de cada vez que se ejecuta el bucle:i = -100; t = x + y; while( i < 0 ) { i += t; }
La optimización de bucles es mucho más eficaz cuando el compilador no puede asumir ningún alias, que se establece con
__restrict
,noalias
orestrict
.Nota:
Puede habilitar o deshabilitar la optimización global en función mediante la pragma
optimize
junto con lag
opción.
Para obtener información relacionada, consulte /Oi
(Generar funciones intrínsecas) y /Ox
(Habilitar la mayoría de las optimizaciones de velocidad).
Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio
Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.
Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.
Escriba la opción del compilador en el cuadro Opciones adicionales.
Para establecer esta opción del compilador mediante programación
- Vea AdditionalOptions.