Compartir a través de


/LTCG (Generación de código en tiempo de enlace)

/LTCG[:NOSTATUS|:STATUS|:PGINSTRUMENT|:PGOPTIMIZE|:PGUPDATE]

Comentarios

  • :NOSTATUS | :STATUS (opcional)
    Especifica si el vinculador muestra un indicador de progreso que muestra el porcentaje del vínculo se completa. De forma predeterminada, esta información de estado no se muestra.

  • :PGINSTRUMENT (opcional)
    Especifica que el vinculador genera un archivo .pgd con objeto de ejecuciones de pruebas proporcionadas en la aplicación. Puede utilizar la opción de /PGD de especificar un nombre de archivo o una ubicación para el archivo .pgd.

    Los datos recopilados de ejecuciones instrumentados se utiliza para crear una imagen optimizada. Para obtener más información, vea Optimización guiada por perfiles (PGO). La forma abreviada de esta opción es /LTCG:PGI.

  • :PGOPTIMIZE (opcional)
    Especifica que el vinculador utiliza los datos de perfil se crea después de que el binario instrumentado se ejecute para crear una imagen optimizada. Todos los archivos de entrada deben ser idénticos a los archivos especificados en /LTCG:PGI. Para obtener más información, vea Optimización guiada por perfiles (PGO). La forma abreviada de esta opción es /LTCG:PGO.

  • :PGUPDATE (opcional)
    Proporciona una lista de archivos de entrada que se agregarán o modificados de qué se especificó en: Fase de PGINSTRUMENT. Sin embargo, ninguna nueva archivos de entrada no se optimizan mediante perfil- optimizaciones guiadas por, y no optimizan partes modificadas desde un archivo de entrada modificado que reemplazan el perfil de datos que se recopila durante la fase de instrumentación para ese código con optimizaciones guiadas por perfil-. Para obtener más información, vea Optimización guiada por perfiles (PGO). La forma abreviada de esta opción es /LTCG:PGU.

La opción /LTCG indica al vinculador que llame al compilador y realice la optimización de entero- programa. También puede realizar una optimización guiada por perfiles. Para obtener más información, vea Optimización guiada por perfiles (PGO).

Con las siguientes excepciones, no puede agregar opciones del vinculador a /LTCG:PGOPTIMIZE o /LTCG:PGUPDATE ejecutado que no se especificó en /LTCG:PGINSTRUMENT ejecuta:

Las opciones del vinculador que se especifican a /LTCG:PGINSTRUMENT no tienen que ser especificadas a /LTCG:PGOPTIMIZE; se implican.

El resto de este tema describe /LTCG en términos de generación de código de vínculo- Tiempo.

La opción /LTCG estará implícita si se usa /GL.

El vinculador invoca la generación de código de vínculo- Tiempo si se pasa un módulo que se compiló mediante /GL o un módulo MSIL (vea .Archivos netmodule como entrada del vinculador). Si no especifica /LTCG cuando pasa /GL o módulos de MSIL del vinculador, el vinculador detecta esta y reinicia finalmente el vínculo mediante /LTCG. Especifique explícitamente /LTCG cuando pasa /GL y módulos de MSIL al vinculador que el rendimiento más rápida posible de compilación.

/LTCG no es válido para el uso con /INCREMENTAL.

Cuando /LTCG se utiliza agentes de vínculo compilados mediante /Og, /O1, /O2, o /Ox, se realizan las optimizaciones siguientes:

  • Procesamiento en línea entre módulos

  • Asignación de registros entre procedimientos (sólo en sistemas operativos de 64 bits)

  • Convenciones de llamada personalizadas (sólo x86)

  • Pequeños desplazamientos de TLS (sólo x86)

  • Alineación doble de pila (sólo x86)

  • Mejora en la anulación de ambigüedades en la memoria (mejor información de interferencias para las variables globales y los parámetros de entrada)

Nota

El vinculador decide qué optimizaciones se compiló cada función con y aplica las mismas optimizaciones en tiempo de vínculo.

Mediante /LTCG y la optimización de la doble- alineación de las causas de /Ogt .

Si se especifican /LTCG y /Ogs , la alineación double no se realiza. Si la mayoría de las funciones de una aplicación se compilan para la velocidad, con algunas funciones compiladas para el tamaño (por ejemplo, con la directiva de optimizar ), el compilador doble- alinea las funciones que se optimizan para el tamaño si llama a las funciones que requieren la alineación doble.

Si el compilador puede identificar todos los sitios de llamada de una función, el compilador omite los modificadores explícitos de convención de llamada en una función y los intenta optimizar la convención de llamada de la función:

  • pase los parámetros en registros

  • reordene los parámetros para alineación

  • quite los parámetros no usados

Si una función se denomina mediante un puntero a función, o si una función crea se denomina fuera de un módulo compilado mediante /GL, el compilador no intenta optimizar la convención de llamada de una función.

Nota

Si utiliza /LTCG y vuelve a definir el mainCRTStartup, la aplicación puede tener un comportamiento impredecible relacionado con el código de usuario que se ejecuta antes de que se inicializan los objetos globales. Hay tres maneras de resolver este problema: no vuelva a definir el mainCRTStartup, no compile el archivo que contiene el mainCRTStartup mediante /LTCG, o se inicializan las variables globales y los objetos estáticamente.

Módulos /LTCG y MSIL

Los módulos que se compilan con /GL y /clr se pueden utilizar como entrada del vinculador cuando se especifica /LTCG .

  • /LTCG puede aceptar los archivos objetos nativos, mixto nativo o los archivos objeto administrado (compilados mediante /clr), los archivos se pueden (compilados mediante /clr:pure), y los archivos objetos seguros (compilados mediante /clr:safe)

  • /LTCG puede aceptar .netmodules seguro, que se puede crear con /clr:safe /LN en Visual C++ y /target:module en cualquier otro compilador de Visual Studio. . .netmodule Seguros generado mediante**/clr** o /clr:pure no es admitido por /LTCG.

  • /LTCG:PGI no acepta los módulos nativos compilados mediante /GL y /clr, o módulos pure (generados mediante /clr:pure)

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. Vea Trabajar con configuraciones de proyecto.

  2. Seleccione la carpeta Propiedades de configuración.

  3. Seleccione la página de propiedades General.

  4. Modifique la propiedad Optimización de todo el programa.

También puede aplicar /LTCG a las compilaciones específicos eligiendo Compilación, Optimización guiada por perfiles en la barra de menús, o eligiendo una de las opciones de optimización guiada por perfileses en el menú contextual el proyecto.

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

Vea también

Referencia

Establecer las opciones del vinculador

Opciones del vinculador