Compartir a través de


/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 y c no cambian entre las tres expresiones, el compilador puede asignar el cálculo de b + c a una variable temporal y usar esa variable para b + 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 o restrict.

    Nota:

    Puede habilitar o deshabilitar la optimización global en función mediante la pragma optimize junto con la g 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

  1. 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.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.

  3. Escriba la opción del compilador en el cuadro Opciones adicionales.

Para establecer esta opción del compilador mediante programación

Consulte también

Sintaxis de la línea de comandos del compilador MSVC