Compartilhar via


/ OPT (otimizações)

Controla as otimizações de LINK realiza durante uma compilação.

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

Arguments

  • 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 o COMDATs unreferenced 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, é 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 percorrer os símbolos de duplicatas. O número de iterações padrão é dois. Iterações adicionais podem localizar mais duplicatas 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 .pdata e .xdata. Para obter o total ICF, especificar explicitamente /OPT:ICF.

    Funções são colocadas em COMDATs com o /Gy opção de compilador e const dados é colocado no 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 sendo atribuído a diferentes funções ou ler somente os membros de dados (const variáveis é compilado com /Gy). Portanto, /OPT:ICF pode quebrar um programa que depende o endereço de funções ou sendo diferentes de membros de dados somente leitura. See /GY (nível de função para ativar a vinculação) for more information.

Comentários

Geralmente, as otimizações diminuir o tamanho da imagem e aumentam a velocidade do programa a um custo de tempo de link de aumento.

Você pode usar o /VERBOSE opção para ver as funções removidas por /OPT:REF e as funções que são dobradas pela /OPT:ICF.

Para definir esta opção de vinculador no ambiente de desenvolvimento Visual Studio

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

  2. Clique o vinculador pasta.

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

  4. Modificar uma das seguintes propriedades:

    • Habilitar a Dobra COMDAT

    • Otimizar para o Windows 98

    • References

Para definir esta opção de vinculador programaticamente

Consulte também

Referência

Configurando opções de vinculador

Opções do Vinculador