/ 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çã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
Abra o projeto Property Pages caixa de diálogo. Para obter detalhes, consulte Definindo propriedades de projeto Visual C++.
Clique o vinculador pasta.
Clique o otimização página de propriedades.
Modificar uma das seguintes propriedades:
Habilitar a Dobra COMDAT
Otimizar para o Windows 98
References
Para definir esta opção de vinculador programaticamente
- Consulte EnableCOMDATFolding e OptimizeReferences Propriedades.