Mpgo.exe (strumento per l'ottimizzazione guidata da profilo gestito)Mpgo.exe (Managed Profile Guided Optimization Tool)

Lo strumento per l'ottimizzazione guidata da profilo gestito (Mpgo.exe) è uno strumento da riga di comando che usa scenari comuni dell'utente finale per ottimizzare gli assembly di immagini native creati dal generatore di immagini native (Ngen.exe).The Managed Profile Guided Optimization Tool (Mpgo.exe) is a command-line tool that uses common end-user scenarios to optimize the native image assemblies that are created by the Native Image Generator (Ngen.exe). Attraverso questo strumento è possibile eseguire scenari di training che generano dati di profilatura,This tool enables you to run training scenarios that generate profile data. Il generatore di immagini native (Ngen.exe) usa questi dati per ottimizzare gli assembly di applicazioni di immagini native generati.The Native Image Generator (Ngen.exe) uses this data to optimize its generated native image application assemblies. Uno scenario di training è un'esecuzione di test di un uso previsto dell'applicazione.A training scenario is a trial run of an expected use of your application. Mpgo.exe è disponibile in Visual Studio Ultimate 2012 e versioni successive.Mpgo.exe is available in Visual Studio Ultimate 2012 and later versions. A partire da Visual Studio 2013Visual Studio 2013, è possibile utilizzare Mpgo.exe anche per ottimizzare le app Windows 8.x StoreWindows 8.x Store.Starting with Visual Studio 2013Visual Studio 2013, you can also use Mpgo.exe to optimize Windows 8.x StoreWindows 8.x Store apps.

L'ottimizzazione PGO migliora i tempi di avvio dell'applicazione, l'utilizzo della memoria (dimensioni del working set) e la velocità effettiva raccogliendo dati dagli scenari di prova e utilizzandoli per ottimizzare il layout delle immagini native.Profile-guided optimization improves application startup time, memory utilization (working set size), and throughput by gathering data from training scenarios and using it to optimize the layout of native images.

Quando si verificano problemi di prestazioni relativi al tempo di avvio e alle dimensioni del working set per gli assembly di linguaggio intermedio (IL), è consigliabile innanzitutto utilizzare Ngen.exe per eliminare i costi della compilazione just-in-time (JIT) e per facilitare la condivisione del codice.When you encounter performance issues with startup time and working set size for Intermediate Language (IL) assemblies, we recommend that you first use Ngen.exe to eliminate just-in-time (JIT) compilation costs and to facilitate code sharing. Se sono necessari miglioramenti aggiuntivi, è possibile utilizzare Mpgo.exe per ottimizzare ulteriormente l'applicazione.If you need additional improvements, you can then use Mpgo.exe to further optimize your application. È possibile utilizzare i dati delle prestazioni degli assembly di immagini native non ottimizzati come base di riferimento per valutare l'incremento delle prestazioni.You can use the performance data from the un-optimized native image assemblies as a baseline to evaluate the performance gains. L'utilizzo di Mpgo.exe può produrre tempi di avvio a freddo più rapidi e un working set di dimensioni più ridotte.Using Mpgo.exe may result in faster cold startup times and a smaller working set size. Mpgo.exe aggiunge informazioni agli assembly IL utilizzati da Ngen.exe per creare assembly di immagini native ottimizzati.Mpgo.exe adds information to IL assemblies that Ngen.exe uses to create optimized native image assemblies. Per altre informazioni, vedere il post Improving Launch Performance for your Desktop Applications (Miglioramento delle prestazioni di avvio per le applicazioni desktop) nel blog di .NET.For more information, see the entry Improving Launch Performance for your Desktop Applications in the .NET blog.

Viene installato automaticamente con Visual Studio.This tool is automatically installed with Visual Studio. Per eseguire lo strumento, utilizzare il prompt dei comandi per gli sviluppatori (o il prompt dei comandi di Visual Studio in Windows 7) con credenziali di amministratore e digitare quanto segue.To run the tool, use the Developer Command Prompt (or the Visual Studio Command Prompt in Windows 7) with administrator credentials, and type the following at the command prompt. Per altre informazioni, vedere Prompt dei comandi.For more information, see Command Prompts.

Per le app desktop:For desktop apps:

mpgo –Scenario <command> [-Import <directory>] –AssemblyList <assembly1>  <assembly2> ... -OutDir <directory> [options]  

Per le app Windows 8.x StoreWindows 8.x Store:For Windows 8.x StoreWindows 8.x Store apps:

SintassiSyntax

mpgo –Scenario <packageName> -AppID <appId> -Timeout <seconds>  

ParametriParameters

Gli argomenti di Mpgo.exe non sono soggetti a distinzione tra maiuscole e minuscole.All arguments to Mpgo.exe are case-insensitive. I comandi sono preceduti da un trattino.Commands are prefixed with a dash.

Nota

È possibile utilizzare –Scenario o –Import come comando obbligatorio, ma non entrambi.You can use either –Scenario or –Import as a required command, but not both. Nessuno dei parametri obbligatori viene usato se si specifica l'opzione –Reset.None of the required parameters are used if you specify the –Reset option.

Parametro obbligatorio.Required parameter DescrizioneDescription
-Scenario <comando>-Scenario <command>

-oppure-—or—

-Scenario <nomePacchetto>-Scenario <packageName>

oppure-or-

-Import <directory>-Import <directory>
Per le app desktop, usare –Scenario per specificare il comando per eseguire l'applicazione che si desidera ottimizzare, inclusi gli eventuali argomenti della riga di comando.For desktop apps, use –Scenario to specify the command to run the application you want to optimize, including any command-line arguments. Racchiudere comando in tre set di virgolette doppie se si specifica un percorso che include spazi; ad esempio: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files".Use three sets of double quotation marks around command if it specifies a path that includes spaces; for example: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files". Non usare le virgolette doppie; non funzioneranno correttamente se comando include spazi.Do not use double quotation marks; they will not work correctly if command includes spaces.

oppure-or-

Per le app Windows 8.x StoreWindows 8.x Store, usare –Scenario per specificare il pacchetto per cui si desidera generare informazioni di profilo.For Windows 8.x StoreWindows 8.x Store apps, use –Scenario to specify the package that you want to generate profile information for. Se si specifica il nome visualizzato del pacchetto o il nome di famiglia del pacchetto anziché il nome completo del pacchetto, Mpgo.exe selezionerà il pacchetto che corrisponde al nome immesso se è presente solo una corrispondenza.If you specify the package display name or the package family name instead of the full package name, Mpgo.exe will select the package that matches the name you provided if there is only one match. Se più pacchetti corrispondono al nome specificato, verrà richiesto di scegliere un pacchetto.If multiple packages match the specified name, Mpgo.exe will prompt you to choose a package.

-oppure-—or—

Utilizzare -Import per specificare che i dati di ottimizzazione derivati da assembly precedentemente ottimizzati devono essere utilizzati per ottimizzare gli assembly in -AssemblyList.Use -Import to specify that optimization data from previously optimized assemblies should be used to optimize the assemblies in -AssemblyList. directory specifica la directory che contiene i file ottimizzati precedentemente.directory specifies the directory that contains the previously optimized files. Gli assembly specificati in –AssemblyList o –AssemblyListFile sono le nuove versioni di assembly da ottimizzare usando i dati dai file importati.The assemblies specified in –AssemblyList or –AssemblyListFile are the new versions of the assemblies to be optimized using the data from the imported files. L'utilizzo dei dati di ottimizzazione da versioni precedenti degli assembly consente di ottimizzare le versioni più recenti senza rieseguire lo scenario.Using optimization data from older version of assemblies enables you to optimize newer versions of assemblies without re-running the scenario. Tuttavia, se gli assembly importati e di destinazione includono codice notevolmente diverso, i dati di ottimizzazione saranno inefficaci.However, if the imported and target assemblies include significantly different code, the optimization data will be ineffective. I nomi degli assembly specificati in –AssemblyList o –AssemblyListFile devono essere inclusi nella directory specificata da –Importdirectory.The assembly names specified in –AssemblyList or –AssemblyListFile must be present in the directory specified by –Importdirectory. Racchiudere directory in tre set di virgolette doppie se si specifica un percorso che include spazi.Use three sets of double quotation marks around directory if it specifies a path that includes spaces.

È necessario specificare il parametro –Scenario o –Import, ma non entrambi i parametri.You must specify either –Scenario or –Import, but not both parameters.
-OutDir <directory>-OutDir <directory> Directory in cui inserire gli assembly ottimizzati.The directory in which to place the optimized assemblies. Se esiste già un assembly nella directory di output, viene creata una nuova copia e viene aggiunto un numero di indice al nome, ad esempio nomeassembly-1.exe.If an assembly already exists in the output directory folder, a new copy is created and an index number is appended to its name; for example: assemblyname-1.exe. Racchiudere directory in virgolette doppie se si specifica un percorso che contiene spazi.Use double quotation marks around directory if it specifies a path that contains spaces.
-AssemblyList <assembly1 assembly2 ...>-AssemblyList <assembly1 assembly2 ...>

-oppure-—or—

-AssemblyListFile <file>-AssemblyListFile <file>
Elenco di assembly (inclusi file .exe e .dll), separati da spazi, di cui si desidera raccogliere informazioni riguardanti il profilo.A list of assemblies (including .exe and .dll files), separated by spaces, that you want collect profile information about. È possibile specificare C:\Dir\*.dll o *.dll per selezionare tutti gli assembly nella directory di lavoro definita o corrente.You can specify C:\Dir\*.dll or *.dll to select all the assemblies in the designated or current working directory. Per altre informazioni, vedere la sezione Osservazioni.See the Remarks section for more information.

-oppure-—or—

File di testo che contiene l'elenco di assembly di cui si desidera raccogliere informazioni sul profilo, un assembly per riga.A text file that contains the list of assemblies you want to collect profile information about, listed one assembly per line. Se il nome dell'assembly inizia con un trattino (-), utilizzare un elenco di file di assembly o rinominare l'assembly.If an assembly name begins with a hyphen (-), use an assembly file list or rename the assembly.
-AppID <IDapp>-AppID <appId> ID dell'applicazione nel pacchetto specificato.The ID of the application in the specified package. Se si usa il carattere jolly (*), Mpgo.exe proverà a enumerare gli IDapp nel pacchetto ed eseguirà il fallback a <package_family_name>!App se non riesce.If you use the wildcard (*), Mpgo.exe will try to enumerate the AppIDs in the package and will fall back to <package_family_name>!App if it fails. Se si specifica una stringa preceduta da un punto esclamativo (!), verrà concatenato il nome della famiglia del pacchetto con l'argomento fornito.If you specify a string that is prefixed by an exclamation point (!), Mpgo.exe will concatenate the package family name with the argument provided.
-Timeout <secondi>-Timeout <seconds> Quantità di tempo per consentire l'esecuzione dell'app Windows 8.x StoreWindows 8.x Store prima della chiusura.The amount of time to allow the Windows 8.x StoreWindows 8.x Store app to run before the app exits.
Parametro facoltativoOptional parameter DescrizioneDescription
-64bit Instrumenta gli assembly per i sistemi a 64 bit.Instruments the assemblies for 64-bit systems. È necessario specificare questo parametro per gli assembly a 64 bit, anche se l'assembly si dichiara come a 64 bit.You must specify this parameter for 64-bit assemblies, even if your assembly declares itself as 64 bit.
-ExeConfig <nomefile>-ExeConfig <filename> Specifica il file di configurazione utilizzato dallo scenario per fornire informazioni sulla versione e sul caricatore.Specifies the configuration file that your scenario uses to provide version and loader information.
-f Forza l'inclusione dei dati di profilo in un assembly binario, anche se è firmato.Forces the inclusion of the profile data in a binary assembly, even if it's signed. Se l'assembly è firmato, è necessario firmarlo nuovamente; in caso contrario, l'assembly non verrà caricato ed eseguito.If the assembly is signed, it must be re-signed; otherwise, the assembly will fail to load and run.
-Reset Reimposta l'ambiente per assicurare che una sessione di profilatura interrotta non influisca sugli assembly ed esce.Resets the environment to make certain that an aborted profiling session doesn't affect your assemblies, and then quits. L'ambiente viene reimpostato per impostazione predefinita prima e dopo una sessione di profilatura.The environment is reset by default before and after a profiling session.
-Timeout <tempo in secondi>-Timeout <time in seconds> Specifica la durata della profilatura in secondi.Specifies the profiling duration in seconds. Utilizzare un valore leggermente superiore dei tempi di avvio osservati per le applicazioni GUI.Use a value that is slightly more than your observed startup times for GUI applications. Alla fine del periodo di timeout, i dati di profilo vengono registrati anche se l'applicazione continua l'esecuzione.At the end of the time-out period, the profile data is recorded although the application continues to run. Se non si imposta questa opzione, la profilatura continuerà fino alla chiusura dell'applicazione, momento nel quale i dati verranno registrati.If you don't set this option, profiling will continue until application shutdown, at which time the data will be recorded.
-LeaveNativeImages Specifica che le immagini native instrumentate non devono essere rimosse dopo l'esecuzione dello scenario.Specifies that the instrumented native images shouldn't be removed after running the scenario. Questa opzione viene utilizzata principalmente quando si esegue l'applicazione specificata per lo scenario,This option is primarily used when you're getting the application that you specified for the scenario running. perché impedisce la nuova creazione di immagini native per le esecuzioni successive di Mpgo.exe.It will prevent the recreation of native images for subsequent runs of Mpgo.exe. Dopo aver completato l'esecuzione dell'applicazione, possono rimanere immagini native orfane nella cache se si specifica questa opzione.When you have finished running your application, there may be orphaned native images in the cache if you specify this option. In questo caso, eseguire Mpgo.exe con lo stesso scenario ed elenco di assembly e utilizzare il parametro–RemoveNativeImages per rimuovere queste immagini native.In this case, run Mpgo.exe with the same scenario and assembly list and use the –RemoveNativeImages parameter to remove these native images.
-RemoveNativeImages Esegue la pulizia dopo un'esecuzione in cui –LeaveNativeImages è stato specificato.Cleans up from a run where –LeaveNativeImages was specified. Se si specifica -RemoveNativeImages, eventuali argomenti tranne -64bit e –AssemblyList vengono ignorati da Mpgo.exe e lo strumento viene chiuso dopo avere rimosso tutte le immagini native instrumentate.If you specify -RemoveNativeImages, Mpgo.exe ignores any arguments except -64bit and –AssemblyList, and exits after removing all instrumented native images.

NoteRemarks

È possibile usare sia –AssemblyList che - AssemblyListFile più volte nella riga di comando.You can use both –AssemblyList and - AssemblyListFile multiple times on the command line.

Se non si specificano nomi di percorso completi quando si specificano gli assembly, Mpgo.exe cerca nella directory corrente.If you do not specify full path names when specifying assemblies, Mpgo.exe looks in the current directory. Se si specifica un percorso errato, Mpgo.exe visualizza un messaggio di errore, ma continua a generare dati per altri assembly.If you specify an incorrect path, Mpgo.exe displays an error message but continues to generate data for other assemblies. Se si specifica un assembly che non viene caricato durante lo scenario di prova, i dati di prova non vengono generati per tale assembly.If you specify an assembly that is not loaded during the training scenario, no training data is generated for that assembly.

Se un assembly nell'elenco è presente nella Global Assembly Cache, non verrà aggiornato con le informazioni sul profilo.If an assembly in the list is in the global assembly cache, it will not be updated to contain the profile information. Rimuoverlo dalla Global Assembly Cache per raccogliere informazioni sul profilo.Remove it from the global assembly cache to collect profile information.

L'utilizzo di Ngen.exe e di Mpgo.exe è consigliato solo per le applicazioni gestite di grandi dimensioni, poiché il vantaggio offerto dalle immagini native precompilate è in genere significativo solo quando elimina una quantità notevole di attività di compilazione JIT in fase di esecuzione.The use of Ngen.exe and Mpgo.exe is recommended only for large managed applications, because the benefit of precompiled native images is typically seen only when it eliminates significant JIT compilation at run time. L'esecuzione di Mpgo.exe su applicazioni di tipo "Hello World" che non fanno un uso elevato del working set non offre alcun vantaggio e Mpgo.exe può anche non riuscire a raccogliere i dati di profilo.Running Mpgo.exe on "Hello World" style applications that aren’t working-set intensive will not provide any benefits, and Mpgo.exe may even fail to gather profile data.

Nota

Ngen.exe e Mpgo.exe non sono consigliati per le applicazioni ASP.NET e i servizi Windows Communication Foundation (WCF).Ngen.exe and Mpgo.exe are not recommended for ASP.NET applications and Windows Communication Foundation (WCF) services.

Per utilizzare Mpgo.exeTo Use Mpgo.exe

  1. Utilizzare un computer con Visual Studio Ultimate 2012 e l'applicazione installata.Use a computer that has the Visual Studio Ultimate 2012 and your application installed.

  2. Eseguire Mpgo.exe come amministratore con i parametri necessari.Run Mpgo.exe as an administrator with the necessary parameters. Vedere la sezione successiva per alcuni comandi di esempio.See the next section for sample commands.

    Gli assembly Intermediate Language (IL) ottimizzati vengono creati nella cartella specificata dal parametro –OutDir (negli esempi si tratta della cartella C:\Optimized).The optimized intermediate language (IL) assemblies are created in the folder specified by the –OutDir parameter (in the examples, this is the C:\Optimized folder).

  3. Sostituire gli assembly IL utilizzati per Ngen.exe con i nuovi assembly IL che contengono le informazioni sul profilo dalla directory specificata da –OutDir.Replace the IL assemblies you used for Ngen.exe with the new IL assemblies that contain the profile information from the directory specified by –OutDir.

  4. Il programma di installazione dell'applicazione (che usa le immagini fornite da Mpgo.exe) installerà le immagini native ottimizzate.The application setup (using the images provided by Mpgo.exe) will install optimized native images.

Flusso di lavoro suggeritoSuggested Workflow

  1. Creare un set di assembly IL ottimizzati usando Mpgo.exe con il parametro –Scenario.Create a set of optimized IL assemblies by using Mpgo.exe with the –Scenario parameter.

  2. Archiviare gli assembly IL ottimizzati nel controllo del codice sorgente.Check the optimized IL assemblies into source control.

  3. Nel processo di compilazione, chiamare Mpgo.exe con il parametro –Import come passaggio di post-compilazione per generare immagini IL ottimizzate da passare a Ngen.exe.In the build process, call Mpgo.exe with the –Import parameter as a post-build step to generate optimized IL images to pass to Ngen.exe.

Questo processo assicura che tutti gli assembly abbiano dati di ottimizzazione.This process ensures that all assemblies have optimization data. Se si archiviano assembly ottimizzati aggiornati (passaggi 1 e 2) più spesso, le prestazioni risulteranno più coerenti durante lo sviluppo del prodotto.If you check in updated optimized assemblies (steps 1 and 2) more frequently, the performance numbers will be more consistent throughout product development.

Utilizzo di Mpgo.exe da Visual StudioUsing Mpgo.exe from Visual Studio

È possibile eseguire Mpgo.exe da Visual Studio (vedere l'articolo Procedura: Specificare eventi di compilazione (C#)) con le restrizioni seguenti:You can run Mpgo.exe from Visual Studio (see the article How to: Specify Build Events (C#)) with the following restrictions:

  • Non è possibile usare percorsi tra virgolette con la barra finale, perché anche le macro di Visual Studio usano la barra finale per impostazione predefinitaYou cannot use quoted paths with trailing slash marks, because Visual Studio macros also use trailing slash marks by default. Ad esempio, –OutDir "C:\Output Folder\" non è valido. Per ovviare a questa limitazione, è possibile anteporre un carattere o una sequenza di escape alla barra finale(For example, –OutDir "C:\Output Folder\" is invalid.) To work around this restriction, you can escape the trailing slash. Ad esempio, usare invece -OutDir "$(OutDir)\".(For example, use -OutDir "$(OutDir)\" instead.)

  • Per impostazione predefinita, Mpgo.exe non si trova nel percorso di compilazione di Visual Studio.By default, Mpgo.exe is not on the Visual Studio build path. È necessario aggiungere il percorso a Visual Studio o specificare il percorso completo sulla riga di comando di Mpgo.You must either add the path to Visual Studio or specify the full path on the Mpgo command line. È possibile utilizzare il parametro –Scenario o –Import nell'evento di post-compilazione in Visual Studio.You can use either the –Scenario or the –Import parameter in the post-build event in Visual Studio. Tuttavia, il processo tipico consiste nell'usare –Scenario richiesto una sola volta da un comando per sviluppatori di Visual Studio e quindi usare –Import per aggiornare gli assembly ottimizzati dopo ogni compilazione; ad esempio: "C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\".However, the typical process is to use –Scenario one time from a Visual Studio developer command prompt, and then use –Import to update the optimized assemblies after each build; for example: "C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\".

EsempiExamples

Il seguente comando Mpgo.exe eseguito da un prompt dei comandi per gli sviluppatori di Visual Studio ottimizza un'applicazione fiscale:The following Mpgo.exe command from a Visual Studio developer command prompt optimizes a tax application:

mpgo –scenario "C:\MyApp\MyTax.exe /params par" –AssemblyList Mytax.dll MyTaxUtil2011.dll –OutDir C:\Optimized –TimeOut 15  

Il seguente comando Mpgo.exe ottimizza un'applicazione audio:The following Mpgo.exe command optimizes a sound application:

mpgo –scenario "C:\MyApp\wav2wma.exe –input song1.wav –output song1.wma" –AssemblyList transcode.dll –OutDir C:\Optimized –TimeOut 15  

Il seguente comando Mpgo.exe utilizza i dati degli assembly precedentemente ottimizzati per ottimizzare le versioni più recenti degli assembly:The following Mpgo.exe command uses data from previously optimized assemblies to optimize newer versions of the assemblies:

mpgo.exe -import "C:\Optimized" -assemblylist "C:\MyApp\MyTax.dll" "C:\MyApp\MyTaxUtil2011.dll" -outdir C:\ReOptimized  

Vedere ancheSee Also

Ngen.exe (generatore di immagini native)Ngen.exe (Native Image Generator)
Prompt dei comandiCommand Prompts
Improving Launch Performance for your Desktop Applications (Miglioramento delle prestazioni di avvio per le applicazioni desktop)Improving Launch Performance for your Desktop Applications
An Overview of Performance Improvements in .NET 4.5 (Panoramica dei miglioramenti delle prestazioni in .NET 4.5)An Overview of Performance Improvements in .NET 4.5