Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A Managed Profile Guided Optimization Tool (Mpgo.exe) é uma ferramenta de linha de comandos que utiliza cenários comuns para utilizadores finais para otimizar as imagens nativas criadas pelo Gerador de Imagens Nativo (Ngen.exe). Esta ferramenta permite-lhe executar cenários de treino que geram dados de perfil. O Gerador de Imagens Nativas (Ngen.exe) utiliza estes dados para otimizar as assembleias de aplicação de imagens nativas geradas. Um cenário de treino é um teste de utilização esperada da sua aplicação. Mpgo.exe está disponível no Visual Studio Ultimate 2012 e versões posteriores. A partir do Visual Studio 2013, também pode usar Mpgo.exe para otimizar aplicações da Windows 8.x Store.
A otimização guiada por perfis melhora o tempo de arranque da aplicação, a utilização da memória (tamanho do conjunto de trabalho) e o throughput, ao recolher dados de cenários de treino e usá-los para otimizar o layout das imagens nativas.
Quando encontrar problemas de desempenho com o tempo de arranque e o tamanho do conjunto de trabalho para assemblies da Intermediate Language (IL), recomendamos que utilize primeiro Ngen.exe para eliminar custos de compilação just-in-time (JIT) e para facilitar a partilha de código. Se precisar de melhorias adicionais, pode então usar Mpgo.exe para otimizar ainda mais a sua aplicação. Pode usar os dados de desempenho das imagens nativas não otimizadas como referência para avaliar os ganhos de desempenho. Usar Mpgo.exe pode resultar em tempos de arranque a frio mais rápidos e num conjunto de trabalho menor. Mpgo.exe adiciona informação aos assemblies de IL que Ngen.exe utiliza para criar assemblies de imagens nativas otimizadas. Para mais informações, consulte a entrada Melhorar o Desempenho de Lançamento para as suas Aplicações de Ambiente de Trabalho no blogue .NET.
Esta ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, utilize o Prompt de Comando do Desenvolvedor ou o PowerShell do Desenvolvedor com credenciais de administrador.
Insira o seguinte comando no prompt de comando:
Para aplicações de ambiente de trabalho:
mpgo -Scenario <command> [-Import <directory>] -AssemblyList <assembly1> <assembly2> ... -OutDir <directory> [options]
Para aplicações da Windows 8.x Store:
mpgo -Scenario <packageName> -AppID <appId> -Timeout <seconds>
Parâmetros
Todos os argumentos para Mpgo.exe são indiferentes a maiúsculas e minúsculas. Os comandos são precedidos por um traço.
Observação
Podes usar qualquer um -Scenario ou -Import como comando obrigatório, mas não ambos. Nenhum dos parâmetros necessários é usado se especificar a -Reset opção.
| Parâmetro obrigatório | Description |
|---|---|
-Scenario
<
Comando>—ou— -Scenario
<
Nome do pacote>-ou- -Import
<
Diretório> |
Para aplicações de ambiente de trabalho, use -Scenario para especificar o comando para executar a aplicação que pretende otimizar, incluindo quaisquer argumentos da linha de comandos. Use três conjuntos de aspas duplas à volta do comando se especificar um caminho que inclua espaços; por exemplo: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files". Não use aspas duplas; não funcionarão corretamente se o comando incluir espaços.-ou- Para aplicações da Windows 8.x Store, use -Scenario para especificar o pacote para o qual pretende gerar a informação do perfil. Se especificar o nome de exibição da embalagem ou o nome da família da embalagem em vez do nome completo, Mpgo.exe selecionará a encomenda que corresponde ao nome que forneceu se houver apenas uma correspondência. Se vários pacotes corresponderem ao nome especificado, Mpgo.exe irá pedir-lhe para escolher um pacote.—ou— Use -Import para especificar que dados de otimização de assemblies previamente otimizados devem ser usados para otimizar os assemblies em -AssemblyList.
diretório especifica o diretório que contém os ficheiros previamente otimizados. Os assemblies especificados em -AssemblyList ou -AssemblyListFile são as novas versões dos assemblies a serem otimizadas usando os dados dos ficheiros importados. Usar dados de otimização de versões antigas de assemblies permite-te otimizar versões mais recentes sem ter de repetir o cenário. No entanto, se os assemblies importados e de destino incluírem código significativamente diferente, os dados de otimização serão ineficazes. Os nomes de montagem especificados em -AssemblyList ou -AssemblyListFile devem estar presentes no diretório especificado por -Importdiretório. Use três conjuntos de aspas duplas à volta do diretório se especificar um caminho que inclua espaços.Deve especificar ou -Scenario ou -Import, mas não ambos os parâmetros. |
-OutDir
<
Diretório> |
O diretório onde colocar os assemblies otimizados. Se já existir um assembly na pasta do diretório de saída, é criada uma nova cópia e um número de índice é acrescentado ao seu nome; por exemplo: assemblyname-1.exe. Use aspas duplas à volta do diretório se especificar um caminho que contenha espaços. |
-AssemblyList
<
assembleia1 assembleia2 ...>—ou— -AssemblyListFile
<
ficheiro> |
Uma lista de assemblies (incluindo ficheiros .exe e .dll), separados por espaços, sobre os quais queres recolher informação de perfil. Pode especificar C:\Dir\*.dll ou *.dll selecionar todas as assembleias no diretório de trabalho designado ou atual. Consulte a seção Comentários para obter mais informações.—ou— Um ficheiro de texto que contém a lista de montagens sobre as quais quer recolher informações de perfil, listava uma montagem por linha. Se o nome de uma assembleia começar por hífen (-), use uma lista de ficheiros de montagem ou renomeie a assembleia. |
-AppID
<
appId> |
O ID da aplicação no pacote especificado. Se usares o coringa (*), Mpgo.exe vais tentar enumerar os AppIDs no pacote e depois vais recorrer ao <package_family_name>! Aplica se falhar. Se especificar uma cadeia que é precedida por um ponto de exclamação (!), Mpgo.exe irá concatenar o nome da família do pacote com o argumento fornecido. |
-Timeout
<
Segundos> |
O tempo necessário para permitir que a aplicação da Windows 8.x Store funcione antes de a aplicação fechar. |
| Parâmetro opcional | Description |
|---|---|
-64bit |
Instrumenta os conjuntos para sistemas de 64 bits. Deve especificar este parâmetro para assemblies de 64 bits, mesmo que a sua assembly se declare como 64 bits. |
-ExeConfig
<
Nome do ficheiro> |
Especifica o ficheiro de configuração que o seu cenário usa para fornecer informação de versão e loader. |
-f |
Força a inclusão dos dados do perfil num conjunto binário, mesmo que esteja assinado. Se a assembleia for assinada, deve ser renovada; caso contrário, o conjunto falhará ao carregar e a funcionar. |
-Reset |
Reinicia o ambiente para garantir que uma sessão de perfilagem abortada não afeta as tuas assemblagens, e depois encerra. O ambiente é reiniciado por defeito antes e depois de uma sessão de perfil. |
-Timeout
<
Tempo em segundos> |
Especifica a duração do perfil em segundos. Use um valor ligeiramente superior aos seus tempos de arranque observados para aplicações com interface gráfica. No final do período de time-out, os dados do perfil são registados embora a aplicação continue a correr. Se não definir esta opção, o perfil continuará até ao encerramento da aplicação, altura em que os dados serão registados. |
-LeaveNativeImages |
Especifica que as imagens nativas instrumentadas não devem ser removidas após a execução do cenário. Esta opção é usada principalmente quando recebes a aplicação que especificaste para o cenário em execução. Isto impedirá a recriação de imagens nativas para execuções subsequentes de Mpgo.exe. Quando terminar de executar a sua aplicação, pode haver imagens nativas órfãs na cache se especificar esta opção. Neste caso, execute Mpgo.exe com o mesmo cenário e lista de montagem e use o -RemoveNativeImages parâmetro para remover estas imagens nativas. |
-RemoveNativeImages |
Limpa de uma corrida onde -LeaveNativeImages foi especificado. Se especificar -RemoveNativeImages, Mpgo.exe ignora quaisquer argumentos exceto -64bit e -AssemblyList, e sai após remover todas as imagens nativas instrumentadas. |
Observações
Podes usar ambos -AssemblyList e -AssemblyListFile várias vezes na linha de comandos.
Se não especificar nomes completos de caminhos ao especificar assemblies, Mpgo.exe procura no diretório atual. Se especificar um caminho incorreto, Mpgo.exe apresenta uma mensagem de erro mas continua a gerar dados para outros conjuntos. Se especificar um assembly que não é carregado durante o cenário de treino, não são gerados dados de treino para esse assembly.
Se uma assembly na lista estiver na cache global assembly, não será atualizada para conter a informação do perfil. Remove-o da cache global de montagem para recolher informações de perfil.
A utilização de Ngen.exe e Mpgo.exe é recomendada apenas para grandes aplicações geridas, porque o benefício das imagens nativas pré-compiladas é tipicamente visto apenas quando elimina uma compilação significativa de JIT em tempo de execução. Executar Mpgo.exe em aplicações do estilo "Hello World" que não sejam intensivas em conjunto de trabalho não trará quaisquer benefícios, e Mpgo.exe pode até falhar na recolha de dados de perfil.
Observação
Ngen.exe e Mpgo.exe não são recomendados para aplicações ASP.NET nem para serviços da Windows Communication Foundation (WCF).
Usar Mpgo.exe
Use um computador que tenha o Visual Studio Ultimate 2012 e a sua aplicação instalada.
Executa Mpgo.exe como administrador com os parâmetros necessários. Veja a secção seguinte para comandos de exemplo.
Os assemblies otimizados da linguagem intermédia (IL) são criados na pasta especificada pelo
-OutDirparâmetro (nos exemplos, esta é aC:\Optimizedpasta).Substitua os assemblies IL que usou para Ngen.exe pelos novos assemblies IL que contêm a informação do perfil do diretório especificado por
-OutDir.A configuração da aplicação (usando as imagens fornecidas por Mpgo.exe) irá instalar imagens nativas otimizadas.
Fluxo de Trabalho Sugerido
Crie um conjunto de assemblies IL otimizados usando Mpgo.exe com o
-Scenarioparâmetro.Verifica os assemblies IL otimizados no controlo de versão.
No processo de compilação, chama Mpgo.exe com o
-Importparâmetro como passo pós-construção para gerar imagens IL otimizadas para passar para Ngen.exe.
Este processo assegura que todas as montagens têm dados de otimização. Se verificares os assemblies otimizados atualizados (passos 1 e 2) com mais frequência, os números de desempenho serão mais consistentes ao longo do desenvolvimento do produto.
Usando Mpgo.exe do Visual Studio
Pode executar Mpgo.exe a partir do Visual Studio (veja o artigo Como: Especificar Eventos de Construção (C#)) com as seguintes restrições:
Não podes usar caminhos aspas com marcas de barra final, porque as macros do Visual Studio também usam marcas de barra finais por defeito. (Por exemplo,
-OutDir "C:\Output Folder\"é inválido.) Para contornar esta restrição, podes escapar ao corte final. (Por exemplo, use-OutDir "$(OutDir)\"em vez disso.)Por defeito, Mpgo.exe não está no caminho de compilação do Visual Studio. Tens de adicionar o caminho ao Visual Studio ou especificar o caminho completo na linha de comandos do Mpgo. Podes usar o
-Scenarioou o-Importparâmetro no evento pós-compilação no Visual Studio. No entanto, o processo típico é usar-Scenariouma vez a partir de um Prompt de Comando do Desenvolvedor para Visual Studio, e depois usar-Importpara atualizar os assemblies otimizados após cada compilação; por exemplo:"C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\".
Examples
O seguinte comando Mpgo.exe de um Prompt de Comando de Desenvolvedor para Visual Studio otimiza uma aplicação fiscal:
mpgo -scenario "C:\MyApp\MyTax.exe /params par" -AssemblyList Mytax.dll MyTaxUtil2011.dll -OutDir C:\Optimized -TimeOut 15
O seguinte comando Mpgo.exe otimiza uma aplicação sólida:
mpgo -scenario "C:\MyApp\wav2wma.exe -input song1.wav -output song1.wma" -AssemblyList transcode.dll -OutDir C:\Optimized -TimeOut 15
O seguinte comando Mpgo.exe utiliza dados de assemblies previamente otimizados para otimizar versões mais recentes dos assemblies:
mpgo.exe -import "C:\Optimized" -assemblylist "C:\MyApp\MyTax.dll" "C:\MyApp\MyTaxUtil2011.dll" -outdir C:\ReOptimized