/ LTCG (geração de código link-time)
/LTCG[:NOSTATUS|:STATUS|:PGINSTRUMENT|:PGOPTIMIZE|:PGUPDATE]
Comentários
Onde:
: NOSTATUS |: STATUS (opcional)
Especifica se o vinculador deve exibir um indicador de progresso mostrando qual porcentagem de link for concluída.O padrão é para não exibir essas informações de status.: PGINSTRUMENT (opcional)
Especifica que o vinculador deve saída de que um arquivo .pgd em preparação para teste instrumentado é executado no aplicativo.Opcionalmente, você pode especificar / PGD para criar o arquivo .pgd com um nome não padrão ou local.Os dados coletados de execuções instrumentadas serão usados para criar uma imagem otimizada.Para obter mais informações, consulte Otimização Guiada por analisar.O curto formulário dessa opção é /LTCG:PGI.
: PGOPTIMIZE (opcional)
Especifica que o vinculador deve usar os dados de analisar criados depois de executar o binário instrumentado para criar uma imagem otimizada.Todos os arquivos de entrada devem ser idênticos aos arquivos que foram especificados com /LTCG:PGI.Para obter mais informações, consulte Otimização Guiada por analisar.O curto formulário dessa opção é /LTCG:PGO.: PGUPDATE (opcional)
Permite que a lista de arquivos de entrada a ser adicionados ou modificados do especificado na: PGINSTRUMENT fase.No entanto, quaisquer novos arquivos de entrada não serão otimizados com otimizações guiadas por analisar e partes alteradas de um arquivo modificado de entrada que invalidar os dados de analisar coletados durante a fase de instrumentação para que o código não serão otimizados com otimizações guiadas por analisar.Para obter mais informações, consulte Otimização Guiada por analisar.A forma abreviada dessa opção é /LTCG:PGU.
Comentários
A opção /LTCG instrui o vinculador a telefonar o compilador e executar a otimização de programa inteiro.Você também pode fazer guiada de analisar de otimização.Para obter mais informações, consulte Otimização Guiada por analisar.
Com as seguintes exceções você não consegue adicionar opções do vinculador adicionais a /LTCG:PGOPTIMIZE ou /LTCG:PGUPDATE executam que não foram especificados em /LTCG:PGINSTRUMENT executar:
Quaisquer opções de vinculador especificadas para /LTCG:PGINSTRUMENT não precisam ser especificado para /LTCG:PGOPTIMIZE; eles estão implícitas.
O restante deste tópico aborda somente /LTCG em termos de geração de código em time de link.
/ LTCG está implícito com /GL.
O vinculador invoca a geração de código em time de link se ele for passado um módulo que foi compilado com /GL ou um módulo MSIL (consulte arquivos .netmodule sistema autônomo entrada do vinculador Para obter mais informações). Se você não especificar explicitamente /LTCG ao passar /GL ou módulos MSIL para o vinculador, o vinculador eventualmente detecta isso e reiniciar o vínculo com o /LTCG. Especificar explicitamente /LTCG ao passar /GL e desempenho de compilação MSIL módulos para o vinculador para o mais rápido possível.
/ LTCG inválido para uso com / INCREMENTAIS.
Quando /LTCG é usado com qualquer um dos /Og, / O1, / O2, or /Ox, são executadas as seguintes otimizações:
Cross-módulo inlining
Interprocedural registrar alocação (sistemas operacionais 64 bit apenas)
Convenção de chamada personalizada (somente x86)
Deslocamento de TLS pequeno (somente x86)
Alinhamento de pilha duplo (somente x86)
Desambigüidade de memória aprimorada (melhor interferência informações para as variáveis global e parâmetros de entrada)
Usando /LTCG e /Ogt resultará na otimização de alinhamento de duas vezes.
Se forem especificados /LTCG e /Ogs, alinhamento duplo não será executado.Se a maioria das funções em um aplicativo é compiladas para velocidade, com algumas funções compiladas para o dimensionar (por exemplo, usando o otimizar pragma), o compilador dupla alinhará essas funções são otimizadas para dimensionar se chamam funções que precisam de alinhamento duplo.
Se o compilador pode identificar todos os sites de telefonar de uma função, o compilador irá ignorar os modificadores de convenção de telefonar explícitas em uma função e tente otimizar a convenção de telefonar da função:
passar parâmetros em registros
reordenar parâmetros para o alinhamento
remover parâmetros não utilizados
Se uma função é chamada por meio do ponteiro de função ou se tornar uma função a ser chamado fora de um módulo compilado com /GL, o compilador não tentará otimizar a convenção de chamada da função.
Observação: |
---|
Se você usar /LTCG e redefinir mainCRTStartup , seu aplicativo pode ter um comportamento imprevisível relativas ao código de usuário que é executado antes que objetos global sejam inicializados.Há três maneiras de abordar esse problema: não redefinir mainCRTStartup , não compilar o arquivo que contém mainCRTStartup com /LTCG, ou inicializar variáveis global e objetos estaticamente, se possível. |
/ Módulos MSIL e LTCG
Módulos compilados com /GL and / CLR pode ser usado sistema autônomo entrada para o vinculador quando /LTCG é especificado:
/LTCG pode aceitar arquivos do objeto nativo; misto arquivos de objeto nativo/gerenciado (compilados com /clr), arquivos de objeto puro (compilados com /clr:pure) e os arquivos de objeto de segurança (compilados com /clr:safe)
/LTCG pode aceitar seguro. netmodules, que podem ser criados com /clr:safe /LN no Visual C++ e /target:module com qualquer Outros compilador do Visual Studio. .netmodules produzido com /clr ou /clr:pure não são aceitos pelo /LTCG.
/LTCG:PGI não aceita nativo módulos compilados com /GL e /clr ou módulos puros (produzido com/CLR: puro)
Para conjunto esta opção do compilador no ambiente de desenvolvimento do Visual Studio
em aberto propriedade Páginas caixa de diálogo.Para obter detalhes, consulte:Modificando Configurações do Projeto.
clicar no Propriedades de configuração pasta.
clicar no Geral página de propriedades.
Modificar o Otimização de programa totalpropriedade .
Você também pode aplicar /LTCG para compilações específicas, escolha otimização interativa de analisar no menu compilação, ou clicando com o botão direito do mouse no nome do projeto no gerenciador de soluções e selecionando uma das opções de otimização interativa de analisar.