Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

/OPT (Optimizaciones)

Controla las optimizaciones que efectúa LINK durante una compilación.

/OPT:{REF | NOREF}
/OPT:{ICF[=iterations] | NOICF}
/OPT:{LBR | NOLBR}
REF | NOREF

/OPT:REF elimina las funciones y los datos a los que nunca se hace referencia; mientras que /OPT:NOREF mantiene las funciones y los datos a los que nunca se hace referencia.

De forma predeterminada, LINK quita las funciones empaquetadas sin referencias. Un objeto contendrá funciones empaquetadas (COMDAT) siempre que se haya compilado con la opción /Gy. Esta optimización se conoce como eliminación transitiva de COMDAT. Para reemplazar este valor predeterminado y mantener las funciones COMDAT sin referencias en el programa, especifique /OPT:NOREF. Se puede usar la opción /INCLUDE para reemplazar la eliminación de un símbolo concreto.

Si se especifica /DEBUG, el valor predeterminado para /OPT es NOREF (de lo contrario, es REF) y se conservan todas las funciones en la imagen. Para reemplazar este valor predeterminado y optimizar una compilación de depuración, especifique /OPT:REF. La opción /OPT:REF deshabilita la vinculación incremental.

Debe marcar explícitamente los datos const como COMDAT; use __declspec(selectany).

Si se especifica /OPT:REF, la opción /OPT:ICF se activa de manera predeterminada. Si desea activar /OPT:REF pero no /OPT:ICF, debe especificar lo siguiente:

link /opt:ref /opt:noicf

Al especificar /OPT:ICF no se activa /OPT:REF.

ICF[= iterations ] | NOICF

Utilice /OPT:ICF[=iterations] para realizar un plegamiento idéntico de COMDAT. Las funciones COMDAT redundantes se pueden quitar de la salida del vinculador. El parámetro opcional iterations especifica el número de veces que se recorren los símbolos en busca de duplicados. El número predeterminado de iteraciones es dos. En iteraciones adicionales es posible localizar más duplicados que no se han cubierto mediante el plegamiento de las iteraciones anteriores.

Existe una diferencia en el comportamiento del vinculador entre especificar explícitamente /OPT:REF con ICF activado de manera predeterminada y especificar explícitamente /OPT:REF,ICF. La opción predeterminada ICF habilitada con /OPT:REF no pliega los datos de solo lectura. Esto incluye todos los .rdata, .pdata y .xdata. Esto origina menos funciones plegadas al generar imágenes para x64, ya que las funciones de estos módulos presentan más dependencia de los datos de solo lectura, tales como .pdata y .xdata. Para obtener el comportamiento de plegamiento completo de ICF, especifique explícitamente /OPT:ICF.

Las funciones se incluyen en COMDAT mediante la opción del compilador /Gy, al igual que los datos const declarados con __declspec(selectany). Vea selectany para obtener un ejemplo de cómo especificar datos para el plegamiento.

La opción ICF se activa de manera predeterminada si la opción REF está activada. Se puede especificar NOICF para invalidar este valor predeterminado si se especifica REF. Debe especificar explícitamente /OPT:ICF para habilitar el plegamiento de COMDAT en una compilación de depuración cuando no se especifica /OPT:REF.

Nota Nota

/OPT:ICF puede provocar que se asigne la misma dirección a funciones o miembros de datos de solo lectura diferentes (variables const compiladas con /Gy). Por consiguiente, /OPT:ICF puede interrumpir un programa que dependa de que las direcciones de funciones o miembros de datos de solo lectura sean diferentes. Para obtener más información, vea /Gy (Habilitar vinculación en el nivel de función).

LBR | NOLBR

Las opciones /OPT:LBR y /OPT:NOLBR se aplican solo a los binarios de ARM. Dado que algunas instrucciones de bifurcación del procesador de ARM tienen un intervalo limitado, si el vinculador detecta un salto a una dirección fuera del intervalo, reemplaza la dirección de destino de la instrucción de bifurcación por la dirección de una "isla" de código que contiene una instrucción de bifurcación que apunta al destino real. Use /OPT:LBR para optimizar la detección de las instrucciones de bifurcación largas y la posición de islas de código intermedio para minimizar el tamaño total del código. /OPT:NOLBR indica al vinculador que genere islas de código para las instrucciones de bifurcación largas tal como se encuentren, sin optimización.

De forma predeterminada, la opción /OPT:LBR se establece cuando la vinculación incremental no está habilitada. Si desea usar un vínculo no incremental pero no desea realizar optimizaciones de bifurcación largas, especifique /OPT:NOLBR. La opción /OPT:LBR deshabilita la vinculación incremental.

Las optimizaciones normalmente disminuyen el tamaño de la imagen y aumentan la velocidad del programa, a costa de un incremento del tiempo de vinculación.

Puede utilizar la opción /VERBOSE para ver las funciones que se han quitado mediante /OPT:REF y las funciones que se han plegado mediante /OPT:ICF.

Para establecer la opción del vinculador OPT:ICF u OPT:REF 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 Trabajar con configuraciones de proyecto.

  2. Seleccione la carpeta Vinculador.

  3. Seleccione la página de propiedades Optimización.

  4. Modifique una de las propiedades siguientes:

    • Habilitar plegamiento de COMDAT

    • Referencias

Para establecer la opción del vinculador OPT:LBR en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para obtener más información, vea Establecer las propiedades de un proyecto de Visual C++.

  2. Seleccione la carpeta Vinculador.

  3. Seleccione la página de propiedades Línea de comandos.

  4. Escriba la opción en Opciones adicionales:

    /opt:lbr

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

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.