/ 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çãoObservaçã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

  1. Abra o projeto Páginas de propriedades caixa de diálogo.Para obter detalhes, consulte Definindo propriedades de projeto Visual C++.

  2. Clique no vinculador pasta.

  3. Clique no otimização página de propriedades.

  4. 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 também

Referência

Configurando opções de vinculador

Opções do vinculador