/ OPT (otimizações)
Controla as otimizações de LINK realiza durante uma compilação.
/OPT:{REF | NOREF}
/OPT:{ICF[=iterations] | NOICF}
Argumentos
REF | NOREF
/OPT:REFelimina as funções e/ou dados que nunca são consultados enquanto /OPT:NOREF mantém as funções e/ou dados que nunca são consultados.LINK remove funções de pacotes não referenciadas por padrão.Um objeto contém funções de pacotes (COMDATs), se ele foi compilado com o /Gy opção.Essa otimização é chamada de eliminação de COMDAT transitiva.Para substituir esse padrão e manter COMDATs não referenciados no programa, especifique o /OPT:NOREF.Você pode usar o /INCLUDE opção para substituir a remoção de um símbolo específico.
Se /Debug for especificado, o padrão para /OPT é NOREF (caso contrário, ele é REF), e todas as funções são preservadas na imagem.Para substituir esse padrão e otimizar uma compilação de depuração, especifique /OPT:REF.O /OPT:REF opção desativa o vínculo incremental.
Você deve marcar explicitamente os dados como um COMDAT; Use __declspec(selectany).
Se /OPT:REF for especificado, /OPT:ICF é ativada por padrão.Se você quiser /OPT:REF , mas não /OPT:ICF, você deve especificar o seguinte:
link /opt:ref /opt:noicf
Especificando /OPT:ICF não ativa a /OPT:REF opção.
ICF[= iterations**] | NOICF**
Use /OPT:ICF[=iterations] para executar o dobramento de COMDAT idênticos.COMDATs redundantes podem ser removidos da saída do vinculador.iterations especifica o número de vezes para atravessar os símbolos de duplicatas.O número de iterações padrão é dois.Iterações adicionais podem localizar duplicatas mais reveladas por meio de dobra na iteração anterior.Observe que há uma diferença no comportamento do vinculador quando ICF está em vigor por padrão com o /OPT:REF explicitamente especificado e quando você especificar explicitamente /OPT:REF,ICF.O padrão ICF com /OPT:REF não dobre dados somente leitura.Isso inclui qualquer .rdata, .pdata e .xdata.No entanto, o padrão ICF com /OPT:REF resulta em menos funções dobrada ao produzir imagens para Itanium e x64 porque funções nesses módulos mais leu apenas dependência de dados, como, por exemplo, .pdata e .xdata.Para obter o total ICF, explicitamente especificar /OPT:ICF.
Funções são colocadas em COMDATs com o /Gy opção de compilador e const dados é colocado em COMDATs.Consulte selectany para obter um exemplo de como especificar dados para serem dobradas.
ICFé ativado por padrão se REF está ativado e deve ser explicitamente ativado em uma compilação de depuração.É possível especificar NOICF se REF é especificado.
Observação /OPT:ICFpode resultar no mesmo endereço que está sendo atribuído a diferentes funções ou ler somente os membros de dados (variáveis const compilado com /Gy).Portanto, /OPT:ICF pode quebrar um programa que varia de acordo com o endereço de funções ou sendo diferentes de membros de dados somente leitura.Consulte /GY (nível de função para ativar vinculação) para obter mais informações.
Comentários
Geralmente, as otimizações diminuir o tamanho da imagem e aumentam a velocidade do programa a um custo de tempo maior de link.
Você pode usar o /VERBOSE opção para ver as funções removidas por /OPT:REF e as funções que são dobradas por /OPT:ICF.
Para definir esta opção de vinculador no ambiente de desenvolvimento Visual Studio
Abra o projeto Páginas de propriedades caixa de diálogo.Para obter detalhes, consulte Definindo propriedades de projeto Visual C++.
Clique no vinculador pasta.
Clique no otimização página de propriedades.
Modificar uma das seguintes propriedades:
Habilitar a Dobra COMDAT
Otimizar para o Windows 98
Referências
Para definir esta opção de vinculador programaticamente
- Consulte EnableCOMDATFolding e OptimizeReferences propriedades.