/ OPÇ (otimizações)
Controla as otimizações de LINK realiza durante uma compilação.
/OPT:{REF | NOREF}
/OPT:{ICF[=iterations] | NOICF}
/OPT:{WIN98 | NOWIN98}
Argumentos
REF | NOREF
/OPT:REF elimina a funções e/ou dados que nunca são referenciados enquanto /OPT:NOREF mantém as funções e/ou dados que nunca são referenciados.LINK remove funções pacotes não referenciadas por padrão.Um objeto contém funções empacotadas (COMDATs) se ele foi compilado com o /Gy opção.Essa otimização é chamada de eliminação COMDAT transitiva.Para substituir esse padrão e manter COMDATs não referenciados no programa, especifique /OPT:NOREF.Você pode usar o / INCLUIR opção para substituir a remoção do símbolo específico.
If / depurar for especificado, o padrão de /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, especificar /OPT:REF. The /OPT:REF opção desativa o vínculo incremental.
Você precisa marcar explicitamente sistema autônomo dados sistema autônomo um COMDAT; use __declspec(selectany).
If /OPT:REF for especificado, /OPT:ICF é ativado por padrão. Se você desejar /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 idênticos COMDAT dobra. 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 duplicatas mais descobertas 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 /OPT:REF explicitamente especificado e se você especificar explicitamente /OPT:REF,ICF. O padrão de ICF com /OPT:REF não dobre dados somente leitura. Isso inclui qualquer .rdata, .pdata e .xdata.No entanto, o padrão de ICF com /OPT:REF resultados em menos funções dobradas ao produzir imagens para Itanium e x64 porque funções nesses módulos têm mais ler apenas dados de dependência, sistema autônomo .pdata e .xdata. Para obter o total de ICF, especifique explicitamente /OPT:ICF.
Funções são colocadas em COMDATs com o /Gy opção do compilador e const dados é colocado no COMDATs. See 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 depurar. É possível especificar NOICF Se REF foi especificado.
Observação: /OPT:ICF pode causar o mesmo endereço que está sendo atribuído a diferentes funções ou ler somente os membros de dados (variáveis const compiladas com /Gy). So, /OPT:ICF pode interromper um programa que varia de acordo com o endereço de funções ou membros de dados somente leitura sejam diferentes. Consulte /Gy (nível de função enable vinculação) para obter mais informações.
WIN98 | NOWIN98
WIN98 e NOWIN98 controle o alinhamento de seção na imagem final. Para aplicativos do Windows 98, ele é ideal para alinhar as seções em um limite de 4 K para melhorar o time de carga (permite o Windows 98 Gerenciador de memória cache imagens executável com um mínimo de espaço perdido).Isso é ativado por padrão no vinculador, portanto, você precisa especificar /OPT:NOWIN98 Para obter um aparada-down (mas mais lento no Windows 98) versão do aplicativo.WIN98 é ativado por padrão. WIN98 não é ativado quando:
/ ALINHAR é usado.
/ computador não visa x86.
/ SUBSISTEMA Especifica algo Outros que o WINDOWS ou CONSOLE.
/OPT:WIN98 não é ativado por padrão para imagens cresceria (segundo a equações crescimento médio, abaixo) em mais de 25 por cento. Em outras palavras, /OPT:WIN98 não deve ser ativado para imagens menores. Você deve ativar /OPT:WIN98 explicitamente para garantir que não são afetados por esse ajuste. Especificar /OPT:NOWIN98 Para obter uma versão menor (mas mais lentamente no Windows 98) do seu aplicativo.
Os aprimoramentos no Windows 98 só funcionam quando as seções em uma imagem executável portátil começarem em um limite de página.The /OPT:WIN98 opção executa o alinhamento de arquivo necessário.
Se você estiver criando componentes que são executados apenas no Windows NT ou Windows 2000, você deve usar /OPT:NOWIN98.
Essa alterar não afeta o carregamento de imagens ou o conjunto de trabalho do processo.Somente o impacto é o dimensionar em disco.
Ajuda a seguir a calcular o crescimento médio de uma imagem usando /OPT:WIN98:
O espaço desperdiçado médio para alinhamento de 4096 byte de arquivo pode ser caracterizado por: Contagem-de-seções-em-imagem * 4096/2
O espaço desperdiçado médio para o alinhamento de 512 byte de arquivo corrente é: Contagem-de-seções-em-imagem * 512/2
Portanto, é o crescimento:
Contagem de bytes crescimento = Contagem-de-seções-em-imagem * (4096/2-512/2)
ou, simplificada,
Contagem de bytes crescimento = Contagem-de-seções-em-imagem * 1792
No entanto, isso não leva em conta o fato de que o cabeçalho da imagem deve ser preenchido para o alinhamento de seção.Como o cabeçalho é sempre 512 bytes ou menos, o crescimento extra é uma constante de 4096-512 ou 3584.
Média contagem-de-bytes-crescimento = Contagem-de-seções-em-imagem * 1792 + 3584
máximo contagem-de-bytes-crescimento = Contagem-de-seções-em-imagem * (4096 512 + 3584
Para obter a contagem das seções, use o DUMPBIN ferramenta em um arquivo executável.O resumo, você terá uma lista de seções nessa imagem.Normalmente, você verá de 3 a 5 seções adicionadas a esse valor.
A única vez que você não deve usar /OPT:WIN98 é quando a imagem executável portátil é muito pequena. Mesmo que uma imagem está programada para downloads, espaço desperdiçado é preenchidas com zero e compacta bem.
Comentários
Otimizações geralmente diminuir o dimensionar da imagem e aumentam a velocidade do programa a um custo de time 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 conjunto esta opção de vinculador no ambiente de desenvolvimento do Visual Studio
em aberto propriedade Páginas caixa de diálogo.Para obter detalhes, consulte Definindo propriedades do Visual C++ projeto.
clicar no Vinculador pasta.
clicar no Otimização página de propriedades.
Modifique uma das seguintes propriedades:
Habilitar Dobra COMDAT
Otimizar para o Windows 98
Referências
Para conjunto esta opção de vinculador programaticamente
- See EnableCOMDATFolding, OptimizeForWindows98, e OptimizeReferences Propriedades.