Esta documentación está archivada y no tiene mantenimiento.

/Og (optimizaciones globales)

Proporciona optimizaciones locales y globales, asignación automática de registros y optimización de bucles. En desuso.


/Og

Están disponibles las siguientes optimizaciones:

  • Eliminación de subexpresiones comunes locales y globales

    En esta optimización, el valor de una subexpresión común se calcula una sola vez. En el ejemplo siguiente, si los valores de b y c no varían entre las tres expresiones, el compilador puede asignar el cálculo de b + c a una variable temporal y sustituirla por b + c:

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

    Para la optimización de subexpresiones comunes locales, el compilador examina la presencia de subexpresiones comunes en secciones breves del código. Para la optimización de subexpresiones comunes globales, el compilador busca subexpresiones comunes en funciones completas.

  • Asignación automática de registros

    Esta optimización permite al compilador almacenar variables y subexpresiones de uso frecuente en registros; se omite la palabra clave register.

  • Optimización de bucles

    Esta optimización elimina las subexpresiones invariables del cuerpo de un bucle. Un bucle óptimo sólo contiene expresiones cuyos valores varían en cada ejecución del bucle. En el ejemplo siguiente, la expresión x + y no varía en el cuerpo del bucle:

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

    Tras la optimización, x + y se calcula una sola vez y no en cada ejecución del bucle:

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

    La optimización de bucles es mucho más eficaz cuando el compilador puede suponer que no existe efecto escalonado (aliasing), el cual se establece con __restrict, noalias o restrict.

    NoteNota

    Puede habilitar o deshabilitar la optimización global función por función mediante la directiva pragma optimize con la opción g.

La opción /Og también habilita la optimización del valor devuelto con nombre, que elimina el constructor y el destructor de copias de un valor devuelto basado en la pila. Vea /O1, /O2 (Minimizar tamaño, maximizar velocidad) para obtener más información.

Para obtener información relacionada, vea Generar funciones intrínsecas (/Oi) y Optimización completa (/Ox).

/Og está en desuso en Visual C++ 2005; utilice /O1 o /O2 en su lugar. Para obtener más información, vea Opciones obsoletas del compilador.

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 obtener información detallada, vea Cómo: Abrir páginas de propiedades del proyecto.

  2. Haga clic en la carpeta C/C++.

  3. Haga clic en la página de propiedades Línea de comandos.

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

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

Mostrar: