Partilhar via


Otimizações guiadas por perfil

Otimização Guiada por perfil 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 provavelmente executar em um ambiente de produção.

Otimizações guiadas por perfil estão disponíveis apenas para destinos nativos: x86, a família de processadores Itanium (IPF), ou x64. Otimizações guiadas por perfil não estão disponíveis para os arquivos de saída que serão executado no common language runtime. Mesmo se você produzir um assembly com código nativo e gerenciado de misto (compilar com /clr), você não pode usar a Otimização Guiada por perfil no apenas nativo código.

ObservaçãoObservação

Informações coletadas em execuções de teste de criação de perfil substituirá otimizações que seriam em vigor se você especificar /Ob, /Os, ou /Ot. Para obter mais informações, consulte /Ob (expansão de função embutida) e / /Ot (código de favor pequena, código de favor rápido) Os,.

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

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

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

  • Vincular com /LTCG:PGINSTRUMENT.

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

  • O perfil da aplicação.

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

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

    Você pode usar o PogoSafeMode opção ao criar o perfil do seu aplicativo. Esta opção permite que você especifique se deseja o perfil da aplicação no modo de segurança ou modo rápido. Para obter mais informações sobre esses modos, consulte PogoSafeMode.

  • Link com /LTCG:PGOPTIMIZE.

    /LTCG:PGOPTIMIZE cria uma imagem otimizada. Esta etapa é aceita como entrada o arquivo .pgd. Para obter mais informações, consulte /LTCG:PGOPTIMIZE.

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

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

  • 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 perfil serão uma função embutida b na função a.

  • Virtual de especulação chamar – se uma chamada virtual ou outra chamada através de um ponteiro de função freqüentemente visa a uma determinada função, uma Otimização Guiada por perfil pode inserir uma chamada direta condicionalmente executado para a função-alvo com freqüência e a chamada direta pode ser embutida.

  • Alocação de registro – otimização com dados de perfil resulta em melhor alocação de registro.

  • Otimização de bloco básico – permite a otimização do bloco básico básicos executados com Issue executado 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 velocidade/tamanho – funções onde o programa gasta muito tempo podem ser otimizadas para velocidade.

  • Função Layout – com base no gráfico de chamada e o comportamento de chamador/receptor perfilado, funções que tendem a estar no mesmo caminho de execução são colocadas na mesma seção.

  • Otimização de ramificação condicional – com os testes de valor, guiada por perfil otimizações encontra se um determinado valor em uma instrução switch é usado com mais freqüência do que outros valores. Esse valor pode ser obtido da instrução switch. O mesmo pode ser feito com if/else instruções onde o otimizador pode solicitar o if/else para que o se ou bloco else é colocado em primeiro lugar dependendo de qual bloco mais freqüentemente é true.

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

  • Separação de código EH – EH O código, excepcionalmente executado, com freqüência pode ser movido para uma seção separada quando otimizações guiadas por perfil podem determinar que as exceções ocorrem apenas em condições excepcionais.

  • Memória intrínsecos – A expansão da intrínsecos pode decidir 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 tamanho do bloco de movimentações ou cópias.

Para obter mais informações, consulte Demonstra Passo a passo: Usar otimizações guiadas por perfil.

Nesta seção

Ferramentas para Otimização Guiada por perfil

Como: Mesclar vários perfis PGO um único perfil

Consulte também

Referência

Ferramentas construir C/C