Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A Otimização Guiada por Perfil (PGO) é uma técnica de otimização do compilador que utiliza dados de criação de perfis em tempo de execução para produzir código nativo mais eficiente. Quando usas o PGO, o compilador reorganiza o código com base na forma como a tua aplicação realmente corre, resultando numa melhor utilização do cache de instruções, menor tamanho de código e execução mais rápida.
Importante
As aplicações do SDK de Aplicações Windows para ambiente de trabalho usam o fluxo de trabalho padrão MSVC PGO. Ao contrário das aplicações UWP, as aplicações de desktop não requerem a cópia manual de pgort140.dll para o pacote da aplicação — a biblioteca de tempo de execução do PGO está disponível através da biblioteca padrão de tempo de execução de C/C++.
Como funciona o PGO
O PGO é um processo em três etapas:
- Instrumento — Construa a sua aplicação com a instrumentação ativada. O compilador insere sondas que registam como o seu código é executado.
-
Perfil — Execute a aplicação instrumentada e exercite os seus cenários mais importantes. Os dados de perfilagem são guardados em
.pgcficheiros. - Otimize — Reconstrua a sua aplicação usando os dados de perfil. O compilador otimiza o layout do código, o inlining e o branching com base no comportamento real em tempo de execução.
Guia passo a passo
1. Configurar para Lançamento
Defina a configuração da sua solução para Release (ou outra configuração que produza código otimizado). O PGO não traz benefícios quando é aplicado a compilações de depuração.
2. Permitir a Otimização de Todo o Programa
Nas propriedades do teu projeto, vai a C/C++>Optimization e verifica se Otimização para Todo o Programa (/GL) está ativada.
3. Instrumentar a compilação
Vá a Linker>Otimização e defina Geração de código em tempo de ligação para Otimização guiada por perfil - Instrumentação (/LTCG:PGInstrument).
Crie a solução. É gerado um .pgd ficheiro juntamente com a saída da compilação.
4. Execute a sua aplicação e recolha dados de perfil
Execute a sua aplicação e pratique os cenários que pretende otimizar — arranque, navegação, processamento de dados ou qualquer fluxo de trabalho crítico para o desempenho. Enquanto a aplicação está a correr, utilize a pgosweep.exe ferramenta (incluída no conjunto de ferramentas MSVC) para recolher dados de perfil:
pgosweep.exe MyApp.exe MyApp!Scenario1.pgc
Podes recolher vários .pgc ficheiros para diferentes cenários.
5. Fusão de dados de perfil (opcional)
Por defeito, todos os .pgc ficheiros colocados ao lado do .pgd ficheiro são fundidos automaticamente durante a etapa de otimização. Para ponderar certos cenários de forma diferente, use a ferramenta pgomgr.exe :
pgomgr.exe -merge:3 MyApp!CoreScenario.pgc MyApp.pgd
Isto dá à execução CoreScenario uma prioridade três vezes superior à das outras execuções.
6. Otimizar a compilação
Volte a Linker>Otimização e defina Geração de Código em Tempo de Ligação para Otimização Guiada por Perfil - Otimizar (/LTCG:PGOptimize).
Reconstrua a solução. O linker funde automaticamente todos .pgc os ficheiros e produz um binário otimizado com base nos dados de perfil.
Dicas para uma PGO eficaz
- Analise cenários realistas. A qualidade da otimização PGO depende de quão representativas são as suas execuções de perfil. Teste os caminhos de código que os utilizadores vão realmente percorrer.
- Combina várias corridas. Recolha dados de perfil de vários cenários de uso diferentes para cobrir uma ampla gama de caminhos de código.
- Refaça o perfil quando o código mudar significativamente. Os dados do perfil tornam-se obsoletos quando fazes grandes alterações à tua base de código. Volte a instrumentar e a analisar o desempenho periodicamente.
- Mede o impacto. Compare o tempo de arranque, a taxa de transferência e a utilização de memória antes e depois do PGO para verificar se a otimização vale a pena.
Conteúdo relacionado
Windows developer