Otimizações guiadas por perfil

Otimização perfil permite didático otimizar um arquivo de saída, onde o otimizador use dados de ensaios de .exe ou .dll de arquivo.Os dados representam como o programa é possível executar em um ambiente de produção.

As otimizações perfil estão disponíveis somente orientados para destinos nativos: x, family (IPF) do processador de Itanium, ou x64.As otimizações perfil não são orientados disponíveis para os arquivos de saída que serão executadas pelo common language runtime.Mesmo se você gerar um assembly com nativo misturado e código gerenciado (compilar com /clr), você não pode usar a otimização perfil apenas em código nativo didático.Analisar otimizações orientados também não há suporte para aplicativos da Windows Store.Se você tentar compilar um projeto com essas opções definidas no IDE, um erro de compilação resultará.

ObservaçãoObservação

Informações coletadas de analisar ensaios substituirá as otimizações de outra forma que seria aplicado 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 otimizações perfil: usar orientados

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

    Cada módulo compilado com /GL pode ser examinado durante ensaios perfil de guiados otimização do comportamento de tempo de execução catch.Cada módulo em uma compilação perfil de didático otimização não tem que ser compiladas com /GL.No entanto, somente os módulos compilados com /GL serão providos e posteriormente disponível. otimizações perfil para orientados

  • Link com /LTCG: PGINSTRUMENT.

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

  • Analisar o aplicativo.

    Cada vez que termina analisadas de uma sessão de EXE ou uma DLL analisado são descarregados, um appname! o arquivo de #.pgc é criado.Um arquivo de .pgc contém informações sobre um ensaio específico do aplicativo.# é um número começando com 1 que é incrementado com base no número de outro appname! arquivos de #.pgc no diretório.Você pode excluir um arquivo de .pgc se o ensaio não representa um cenário que você deseja otimizar.

    Durante um ensaio, você pode forçar o fechamento de arquivo aberto de .pgc e criar um novo arquivo de .pgc com o utilitário de pgosweep (por exemplo, quando o final de um cenário de teste não coincide com o desligamento do aplicativo).

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

  • Vincular com /LTCG:PGOPTIMIZE.

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

Mesmo é possível criar o arquivo de saída e posteriormente otimizado para determinar que a análise adicional seria útil criar uma imagem mais otimizada.Se a imagem provida e o arquivo de .pgd estão disponíveis, você pode fazer ensaios adicionais e reconstruiu a imagem otimizada com o arquivo mais recente de .pgd.

A seguir está uma lista das otimizações perfil: orientados pelo

  • Inlining – por exemplo, se existir uma função que geralmente à função B de chamadas, e a função B é relativamente pequenas, então as otimizações perfil vai função in-line orientados a B em A função.

  • Virtual Call Speculation – se uma chamada virtual, ou outro chamada através de um ponteiro de função, geralmente usam uma determinada função, uma otimização perfil chamada didático pode inserir um direto condicional executado para a função frequentemente- destino, e a chamada direto pode ser inlined.

  • Register Allocation – otimizando com resultados de dados de perfil na melhor alocação do registro.

  • Basic Block Optimization – a otimização básica do bloco reserva os blocos básicos que executam prazo geralmente executados em um quadro usando a ser colocado no mesmo conjunto de páginas (local).Isso minimiza o número de páginas usadas, então minimizando a sobrecarga de memória.

  • Size/Speed Optimization – funções onde o programa muito tempo gasta podem ser otimizadas para a velocidade.

  • Function Layout com base no elemento gráfico de chamada e comportamento analisado do chamador/receptor, as funções que tendem a ser mesmo ao longo do caminho de execução é colocado na mesma seção.

  • Conditional Branch Optimization – com as investigações de valor, as otimizações perfil podem localizar orientados se um determinado valor em uma instrução de opção é usado com mais frequência do que outros valores.Esse valor pode então ser retirado de instrução de opção.O mesmo pode ser feitas com instruções de if/else onde o otimizador pode classificar o if/else de modo que qualquer se um ou no bloco é colocado primeiro dependendo de qual bloco é geralmente mais.

  • Dead Code Separation – o código que não é chamado durante a análise é movido para uma seção especial que é acrescentada ao final do conjunto de seções.Isso mantém efetivamente esta seção fora das páginas freqüentemente usadas.

  • EH Code Separation – o código de EH, exclusivamente sendo executado, geralmente pode ser movido para uma seção separada quando as otimizações perfil podem determinar orientados as exceções que ocorrem apenas em circunstâncias excepcionais.

  • Memory Intrinsics – a expansão de intrinsics pode ser decidida melhor se pode ser determinada se um tipo intrínseco é frequentemente chamado.Um tipo intrínseco também pode ser otimizada com base no tamanho do bloco de move ou copia-se.

Para obter mais informações, consulte Walkthrough: Using Profile-Guided Optimizations.

Nesta seção

Ferramentas para Otimização Guiada por perfil

Como: mesclar vários perfis PGO em um único perfil

Consulte também

Referência

Ferramentas de construção de C/C++.