Otimização Guiada por analisar

otimização guiada por analisar permite otimizar um arquivo de saída, onde o otimizador usa dados de execuções de teste do arquivo .exe ou .dll.Os dados representam como o programa é provável que executar em um ambiente de produção.

Otimizações guiadas por analisar só estão disponível para destinos nativo: x86, Itanium família de processadores (IPF), ou x64. Otimizações guiadas por analisar não estão disponível para arquivos de saída que serão executado no common linguagem tempo de execução.Mesmo se você gerar um assembly com código nativo e gerenciado misto (compilar com /clr), não é possível usar otimização guiada por analisar apenas o código nativo.

Observação:

Informações coletadas de um perfil de execução de teste substituirão otimizações que seriam em vigor se você especificar /Ob, /Os, ou /Ot. Para obter mais informações, consulte /Ob (embutido função expansão) e / Os, /Ot (favorecer código Small, favorecer código Fast).

A seguir está uma visão geral do processo de usar otimizações guiadas por analisar:

  • Compilar um ou mais arquivos de código fonte com /GL.

    Cada módulo criado com /GL pode ser examinado durante otimização guiada por analisar execução de teste para capturar o comportamento em time de execução.Todos os módulos de uma compilação de Otimização Guiada por analisar não tem de ser compilado com /GL.No entanto, somente os módulos compilados com /GL será instrumentados e mais recente disponível para otimizações guiadas por analisar.

  • Link com /LTCG:PGINSTRUMENT.

    /LTCG:PGINSTRUMENT cria um arquivo .pgd vazio.Depois que sistema autônomo dados de execução de teste são adicionados ao arquivo .pgd, pode ser usado sistema autônomo entrada para a próxima etapa de link (Criando a imagem otimizada).Ao especificar /LTCG:PGINSTRUMENT, opcionalmente, você pode especificar / PGD com um nome não padrão ou local para o arquivo .pgd.

  • analisar do aplicativo.

    Toda vez que uma sessão EXE perfilada termina ou uma DLL com perfil é descarregada, um appname! # .pgc arquivo é criado.Um arquivo .pgc contém informações sobre um determinado aplicativo tempo de execução de teste.# é um número que começa com 1 que é incrementado com base no número de outros appname! # .pgc arquivos no diretório.Você pode excluir um arquivo .pgc se a execução de teste não representa um cenário que você deseja otimizar.

    Durante uma execução de teste, você pode forçar o fechamento do arquivo .pgc em aberto no momento e a criação de um novo arquivo .pgc com o pgosweepUtilitário de (por exemplo, ao participante de um cenário de teste não coincidir com o encerramento do aplicativo).

  • Link com /LTGC:PGOPTIMIZE.

    /LTGC:PGOPTIMIZE cria imagem otimizada.Esta etapa utiliza sistema autônomo entrada o arquivo .pgd.Para obter mais informações, consulte /LTCG:PGOPTIMIZE.

É possível criar o arquivo de saída otimizada e mais tarde, determinar que adicionais de criação de perfil seria útil para criar uma imagem mais otimizada.Se a imagem instrumentada e seu arquivo .pgd estiverem disponível, você pode fazer a execução de teste adicionais e recriado imagem otimizada com o arquivo .pgd mais recente.

A seguir está uma lista das otimizações guiadas por analisar:

  • Inlining – Por exemplo, se existe uma função A que freqüentemente chamadas de função B, a função B é relativamente pequena e otimizações guiadas por analisar serão embutido funciona B em função a.

  • Virtual telefonar especulação – Se uma telefonar virtual ou Outros telefonar através de um ponteiro de função freqüentemente visa uma determinada função, uma otimização guiada por analisar pode inserir uma telefonar direta condicionalmente executado para a função direcionados com freqüência e a telefonar direta pode ser embutida.

  • Registrar a alocação – Otimizando com analisar de dados resultados em melhor registrar alocação.

  • Otimização de bloco básico – Otimização do bloco básico permite que blocos básicos executados com temporally executadas dentro de um determinado quadro sejam colocados no mesmo conjunto de páginas (localidade).Isso minimiza o número de páginas usadas, minimizando assim a sobrecarga de memória.

  • Otimização de dimensionar/velocidade – Funções em que o programa passa muito time podem ser otimizadas para velocidade.

  • Layout de função – Com base no gráfico de telefonar e o comportamento de chamador/computador chamado perfilado, funções que tendem a ser ao longo do mesmo caminho de execução são colocadas na mesma seção.

  • Otimização de ramificar condicional – Com o valor de testes, otimizações guiadas por analisar encontra se um determinado valor em uma demonstrativo comutador é usado com mais freqüência do que outros valores.Esse valor, em seguida, pode ser puxado da demonstrativo comutador.O mesmo pode ser concluído com if/else instruções em que o otimizador pode solicitar o if/else para que ambos if ou bloco else é colocado primeiro dependendo de qual bloco é mais freqüentemente true.

  • Separação de código morto – Código que não é chamado durante a criação de perfil é movido para uma seção especial que é acrescentada ao participante do conjunto de seções.Isso efetivamente mantém essa seção fora das páginas usadas com freqüência.

  • EH separação de código – EH o código, excepcionalmente que está sendo executado, geralmente podem ser movidos para uma seção separada quando otimizações guiadas por analisar podem determinar que as exceções ocorrem apenas em condições excepcionais.

  • Memória intrínsecos – A expansão de intrinsics poderá ser decidido melhor se possível determinar se um intrínseca for chamada com freqüência.Um intrínsecas podem também ser otimizadas com base no dimensionar do bloco de movimentações ou cópias.

Para obter mais informações, consulte Demonstra Passo a passo: Usando otimizações interativa de perfil.

Nesta seção

Ferramentas para otimização guiada por analisar

Como: mesclagem vários perfis PGO em um único analisar

Consulte também

Referência

Ferramentas construir C/C