Mpgo.exe (Outil d'optimisation guidée par profil managé)Mpgo.exe (Managed Profile Guided Optimization Tool)

L’outil d’optimisation guidée par profil managé (Mpgo.exe) est un outil en ligne de commande qui utilise des scénarios d’utilisateurs finaux communs afin d’optimiser les assemblys d’images natives créés par le générateur d’images natives (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). Cet outil vous permet d’exécuter les scénarios de formation qui génèrent des données de profil.This tool enables you to run training scenarios that generate profile data. Le générateur d’images natives (Ngen.exe) utilise ces données pour optimiser ses assemblys d’applications d’images natives générées.The Native Image Generator (Ngen.exe) uses this data to optimize its generated native image application assemblies. Un scénario de formation est une tentative d’exécution d’une utilisation prévue de votre application.A training scenario is a trial run of an expected use of your application. Mpgo.exe est disponible dans Visual Studio Ultimate 2012 Ultimate et versions ultérieures.Mpgo.exe is available in Visual Studio Ultimate 2012 and later versions. À partir de Visual Studio 2013, vous pouvez également utiliser Mpgo.exe pour optimiser les applications Windows 8.x StoreWindows 8.x Store.Starting with Visual Studio 2013, you can also use Mpgo.exe to optimize Windows 8.x StoreWindows 8.x Store apps.

L'optimisation guidée par profil améliore le temps de démarrage de l'application, l'utilisation de la mémoire (taille de la plage de travail), et le débit en collectant les données des scénarios d'apprentissage et en les utilisant pour optimiser la disposition des images natives.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.

Lorsque vous rencontrez des problèmes de performance en matière de temps de démarrage et de taille de la plage de travail pour les assemblys Intermediate Language (IL), il est recommandé d'utiliser d'abord Ngen.exe pour éliminer les coûts de compilation juste-à-temps et de simplifier le partage de code.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. Si vous avez besoin d'autres améliorations, vous pouvez utiliser ensuite Mpgo.exe pour optimiser davantage votre application.If you need additional improvements, you can then use Mpgo.exe to further optimize your application. Vous pouvez utiliser les données de performance des assemblys d'images natives non optimisés comme une référence pour évaluer les gains de performance.You can use the performance data from the un-optimized native image assemblies as a baseline to evaluate the performance gains. L'utilisation de Mpgo.exe peut entraîner des temps de démarrage à froid plus rapides et une plus petite taille de la plage de travail.Using Mpgo.exe may result in faster cold startup times and a smaller working set size. Mpgo.exe ajoute des informations aux assemblys IL que Ngen.exe utilise pour créer des assemblys optimisés d'images natives.Mpgo.exe adds information to IL assemblies that Ngen.exe uses to create optimized native image assemblies. Pour plus d’informations, consultez l’entrée Improving Launch Performance for your Desktop Applications dans le blog .NET.For more information, see the entry Improving Launch Performance for your Desktop Applications in the .NET blog.

Cet outil est installé automatiquement avec Visual Studio.This tool is automatically installed with Visual Studio. Pour exécuter l’outil, utilisez l’invite de commandes développeur pour Visual Studio (ou l’invite de commandes Visual Studio dans Windows 7) avec les informations d’identification d’administrateur, puis tapez la commande suivante à l’invite de commandes.To run the tool, use the Developer Command Prompt for Visual Studio (or the Visual Studio Command Prompt in Windows 7) with administrator credentials, and type the following at the command prompt. Pour plus d'informations, consultez Invites de commandes.For more information, see Command Prompts.

Pour les applications de bureau :For desktop apps:

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

Pour les applications de Windows 8.x StoreWindows 8.x Store :For Windows 8.x StoreWindows 8.x Store apps:

SyntaxeSyntax

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

ParamètresParameters

Tous les arguments à Mpgo.exe sont insensibles à la casse.All arguments to Mpgo.exe are case-insensitive. Les commandes sont préfixées avec un tiret.Commands are prefixed with a dash.

Notes

Vous pouvez utiliser –Scenario ou –Import comme commande obligatoire, mais pas les deux.You can use either –Scenario or –Import as a required command, but not both. Aucun des paramètres requis n'est utilisé si vous spécifiez l'option –Reset.None of the required parameters are used if you specify the –Reset option.

Paramètre requisRequired parameter DescriptionDescription
-Scenario <commande>-Scenario <command>

- ou -—or—

-Scenario <nom_package>-Scenario <packageName>

- ou --or-

-Import <répertoire>-Import <directory>
Pour les applications de bureau, utilisez –Scenario pour spécifier la commande qui doit exécuter l'application que vous voulez optimiser, y compris tous les arguments de ligne de commande.For desktop apps, use –Scenario to specify the command to run the application you want to optimize, including any command-line arguments. Utilisez trois jeux de guillemets doubles autour de la commande si elle spécifie un chemin qui comprend des espaces, par exemple 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". N’utilisez pas de guillemets doubles ; ils ne fonctionneront pas correctement si la commande inclut des espaces.Do not use double quotation marks; they will not work correctly if command includes spaces.

- ou --or-

Pour les applications Windows 8.x StoreWindows 8.x Store, utilisez –Scenario pour spécifier le package pour lequel vous voulez générer des informations de profil.For Windows 8.x StoreWindows 8.x Store apps, use –Scenario to specify the package that you want to generate profile information for. Si vous spécifiez le nom d'affichage du package ou le nom de famille du package au lieu du nom complet du package, Mpgo.exe sélectionnera le package qui correspond au nom que vous avez fourni s'il existe une seule correspondance.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. Si plusieurs packages correspondent au nom spécifié, Mpgo.exe vous invite à choisir un package.If multiple packages match the specified name, Mpgo.exe will prompt you to choose a package.

- ou -—or—

Utilisez -Import pour spécifier que les données d'optimisation des assemblys précédemment optimisés doivent être utilisées pour optimiser les assemblys dans -AssemblyList.Use -Import to specify that optimization data from previously optimized assemblies should be used to optimize the assemblies in -AssemblyList. Le répertoire représente le répertoire qui contient les fichiers précédemment optimisés.directory specifies the directory that contains the previously optimized files. Les assemblys spécifiés dans –AssemblyList ou –AssemblyListFile sont les nouvelles versions d'assemblys à optimiser à l'aide des données des fichiers importés.The assemblies specified in –AssemblyList or –AssemblyListFile are the new versions of the assemblies to be optimized using the data from the imported files. Utiliser des données optimisées d'une version antérieure des assemblys vous permet d'optimiser les versions plus récentes des assemblys sans réexécuter le scénario.Using optimization data from older version of assemblies enables you to optimize newer versions of assemblies without re-running the scenario. Toutefois, si les assemblys importés et les assemblys cibles incluent du code considérablement différent, les données d'optimisation seront inefficaces.However, if the imported and target assemblies include significantly different code, the optimization data will be ineffective. Les noms d’assemblys spécifiés dans –AssemblyList ou –AssemblyListFile doivent être présents dans le répertoire spécifié par –Importrépertoire.The assembly names specified in –AssemblyList or –AssemblyListFile must be present in the directory specified by –Importdirectory. Utilisez trois jeux de guillemets doubles autour du répertoire s’il spécifie un chemin qui comprend des espaces.Use three sets of double quotation marks around directory if it specifies a path that includes spaces.

Vous devez spécifier –Scenario ou –Import, mais pas les deux paramètres.You must specify either –Scenario or –Import, but not both parameters.
-OutDir <répertoire>-OutDir <directory> Le répertoire dans lequel placer les assemblys optimisés.The directory in which to place the optimized assemblies. Si un assembly existe déjà dans le dossier de répertoire de sortie, une copie est créée et un numéro d’index est ajouté à son nom, par exemple nom_assembly-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. Utilisez des guillemets doubles autour du répertoire s’il spécifie un chemin qui comprend des espaces.Use double quotation marks around directory if it specifies a path that contains spaces.
-AssemblyList <assembly1 assembly2 ...>-AssemblyList <assembly1 assembly2 ...>

- ou -—or—

-AssemblyListFile <fichier>-AssemblyListFile <file>
Une liste d'assemblys (y compris les fichiers .exe et .dll), séparés par des espaces, dont vous voulez collecter des informations de profil.A list of assemblies (including .exe and .dll files), separated by spaces, that you want collect profile information about. Vous pouvez spécifier C:\Dir\*.dll ou *.dll pour sélectionner tous les assemblys dans le répertoire de travail indiqué ou le répertoire actuel.You can specify C:\Dir\*.dll or *.dll to select all the assemblies in the designated or current working directory. Pour plus d'informations, consultez la section Notes.See the Remarks section for more information.

- ou -—or—

Un fichier texte contenant la liste des assemblys dont vous souhaitez collecter les informations de profil, classée avec un assembly par ligne.A text file that contains the list of assemblies you want to collect profile information about, listed one assembly per line. Si un nom d'assembly commence par un trait d'union (-), utilisez une liste de fichiers d'assembly ou renommez l'assembly.If an assembly name begins with a hyphen (-), use an assembly file list or rename the assembly.
-AppID <appId>-AppID <appId> L'ID de l'application dans le package spécifié.The ID of the application in the specified package. Si vous utilisez le caractère générique (*), Mpgo.exe essaie d’énumérer les appId dans le package et revient à <nom_famille_packages>!App s’il échoue.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. Si vous spécifiez une chaîne qui est précédée d’un point d’exclamation (!), Mpgo.exe concatènera le nom de famille de package avec l’argument fourni.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 <secondes>-Timeout <seconds> La durée d'exécution allouée à l'application Windows 8.x StoreWindows 8.x Store avant que l'application s'arrête.The amount of time to allow the Windows 8.x StoreWindows 8.x Store app to run before the app exits.
Paramètre facultatifOptional parameter DescriptionDescription
-64bit Instrumente les assemblys pour les systèmes 64 bits.Instruments the assemblies for 64-bit systems. Vous devez spécifier les paramètres pour les assemblys 64 bits, même si votre assembly se déclare comme 64 bits.You must specify this parameter for 64-bit assemblies, even if your assembly declares itself as 64 bit.
-ExeConfig <nom_fichier>-ExeConfig <filename> Spécifie le fichier de configuration que votre scénario utilise pour fournir la version et les informations du chargeur.Specifies the configuration file that your scenario uses to provide version and loader information.
-f Force l'inclusion de données de profil dans un assembly binaire, même s'il est signé.Forces the inclusion of the profile data in a binary assembly, even if it's signed. Si l'assembly est signé, il doit être re-signé ; sinon, l'assembly ne chargera pas et ne fonctionnera pas.If the assembly is signed, it must be re-signed; otherwise, the assembly will fail to load and run.
-Reset Réinitialise l'environnement pour vous assurer qu'une session de profilage abandonnée n'affecte pas vos assemblys, puis se ferme.Resets the environment to make certain that an aborted profiling session doesn't affect your assemblies, and then quits. L'environnement est réinitialisé par défaut avant et après une session de profilage.The environment is reset by default before and after a profiling session.
-Timeout <temps en secondes>-Timeout <time in seconds> Spécifie la durée de profilage en secondes.Specifies the profiling duration in seconds. Utilisez une valeur qui est légèrement supérieure aux temps de démarrage observés pour les applications GUI.Use a value that is slightly more than your observed startup times for GUI applications. À la fin du délai d'attente, les données de profil sont enregistrées bien que l'application continue à fonctionner.At the end of the time-out period, the profile data is recorded although the application continues to run. Si vous ne définissez pas cette option, le profilage continue jusqu'à l'arrêt de l'application, et les données seront alors enregistrées.If you don't set this option, profiling will continue until application shutdown, at which time the data will be recorded.
-LeaveNativeImages Spécifie que les images natives instrumentées ne doivent pas être supprimées après l'exécution du scénario.Specifies that the instrumented native images shouldn't be removed after running the scenario. Cette option est principalement utilisée lorsque vous exécutez l'application que avez spécifiée pour le scénario.This option is primarily used when you're getting the application that you specified for the scenario running. Cela empêchera la recréation d'images natives pour les exécutions suivantes de Mpgo.exe.It will prevent the recreation of native images for subsequent runs of Mpgo.exe. Lorsque vous avez terminé d'exécuter votre application, il peut y avoir des images natives orphelines dans le cache si vous spécifiez cette option.When you have finished running your application, there may be orphaned native images in the cache if you specify this option. Dans ce cas, exécutez Mpgo.exe avec le même scénario et la même liste des assemblys, et utilisez le paramètre –RemoveNativeImages pour supprimer ces images natives.In this case, run Mpgo.exe with the same scenario and assembly list and use the –RemoveNativeImages parameter to remove these native images.
-RemoveNativeImages Nettoie dans une exécution où –LeaveNativeImages a été spécifié.Cleans up from a run where –LeaveNativeImages was specified. Si vous spécifiez -RemoveNativeImages, Mpgo.exe ignore tous les arguments sauf -64bit et –AssemblyList, et s'arrête après avoir supprimé toutes les images natives instrumentées.If you specify -RemoveNativeImages, Mpgo.exe ignores any arguments except -64bit and –AssemblyList, and exits after removing all instrumented native images.

RemarquesRemarks

Vous pouvez utiliser –AssemblyList et - AssemblyListFile plusieurs fois sur la ligne de commande.You can use both –AssemblyList and - AssemblyListFile multiple times on the command line.

Si vous ne spécifiez pas de chemins d'accès complets en spécifiant des assemblys, Mpgo.exe recherche dans le répertoire actif.If you do not specify full path names when specifying assemblies, Mpgo.exe looks in the current directory. Si vous spécifiez un chemin d'accès incorrect, Mpgo.exe affiche un message d'erreur mais continue à générer des données pour les autres assemblys.If you specify an incorrect path, Mpgo.exe displays an error message but continues to generate data for other assemblies. Si vous spécifiez un assembly qui n'est pas chargé pendant le scénario d'apprentissage, aucune donnée d'apprentissage n'est générée pour cet assembly.If you specify an assembly that is not loaded during the training scenario, no training data is generated for that assembly.

Si un assembly dans la liste se trouve dans le Global Assembly Cache, il ne sera pas mis à jour pour contenir les informations du profil.If an assembly in the list is in the global assembly cache, it will not be updated to contain the profile information. Supprimez-le du Global Assembly Cache pour collecter les informations de profil.Remove it from the global assembly cache to collect profile information.

L'utilisation de Ngen.exe et de Mpgo.exe est recommandée uniquement pour les grandes applications managées, car l'avantage des images natives précompilées est généralement uniquement observé dans le cadre d'élimination de compilations JIT importantes au moment de l'exécution.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’exécution de Mpgo.exe sur des applications de style « Hello World » qui ne sollicitent pas trop le jeu de travail ne présente aucun avantage et Mpgo.exe peut même échouer à rassembler des données de profil.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.

Notes

Ngen.exe et Mpgo.exe ne sont pas recommandés pour les applications ASP.NET et pour les services Windows Communication Foundation (WCF).Ngen.exe and Mpgo.exe are not recommended for ASP.NET applications and Windows Communication Foundation (WCF) services.

Pour utiliser Mpgo.exeTo Use Mpgo.exe

  1. Utilisez un ordinateur sur lequel Visual Studio Ultimate 2012 et votre application sont installés.Use a computer that has the Visual Studio Ultimate 2012 and your application installed.

  2. Exécutez Mpgo.exe en tant qu'administrateur avec les paramètres nécessaires.Run Mpgo.exe as an administrator with the necessary parameters. Consultez la section suivante pour les exemples de commande.See the next section for sample commands.

    Les assemblys IL (Intermediate Language) optimisés sont créés dans le dossier spécifié par le paramètre –OutDir (dans les exemples, il s'agit du dossier 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. Remplacez les assemblys IL que vous avez utilisés pour Ngen.exe par les nouveaux assemblys IL contenant les informations de profil du répertoire spécifié par –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. La configuration de l'application (à l'aide des images fournies par Mpgo.exe) installera des images natives optimisées.The application setup (using the images provided by Mpgo.exe) will install optimized native images.

Flux de travail proposéSuggested Workflow

  1. Créez un jeu d'assemblys IL optimisés à l'aide de Mpgo.exe avec le paramètre –Scenario.Create a set of optimized IL assemblies by using Mpgo.exe with the –Scenario parameter.

  2. Vérifiez les assemblys IL optimisés dans le contrôle de code source.Check the optimized IL assemblies into source control.

  3. Dans le processus de génération, appelez Mpgo.exe avec le paramètre –Import comme une étape après génération pour générer des images IL optimisées pour passer à 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.

Ce processus garantit que tous les assemblys ont des données d'optimisation.This process ensures that all assemblies have optimization data. Si vous enregistrez des assemblys optimisés mis à jour (étapes 1 et 2) plus fréquemment, les nombres de performance seront plus homogènes durant le développement du produit.If you check in updated optimized assemblies (steps 1 and 2) more frequently, the performance numbers will be more consistent throughout product development.

Utiliser Mpgo.exe depuis Visual StudioUsing Mpgo.exe from Visual Studio

Vous pouvez exécuter Mpgo.exe dans Visual Studio (consultez l’article Guide pratique pour spécifier les événements de build (C#)) avec les restrictions suivantes :You can run Mpgo.exe from Visual Studio (see the article How to: Specify Build Events (C#)) with the following restrictions:

  • Vous ne pouvez pas utiliser les chemins d’accès entre guillemets avec des marques de barre oblique finales, car les macros Visual Studio utilisent également des marques de barre oblique finales par défaut.You cannot use quoted paths with trailing slash marks, because Visual Studio macros also use trailing slash marks by default. (Par exemple, –OutDir "C:\Output Folder\" n'est pas valide.) Pour contourner cette restriction, évitez la barre oblique finale.(For example, –OutDir "C:\Output Folder\" is invalid.) To work around this restriction, you can escape the trailing slash. (Par exemple, utilisez -OutDir "$(OutDir)\" à la place.)(For example, use -OutDir "$(OutDir)\" instead.)

  • Par défaut, Mpgo.exe n'est pas dans le chemin d'accès de build de Visual Studio.By default, Mpgo.exe is not on the Visual Studio build path. Vous devez soit ajouter le chemin d'accès à Visual Studio, soit spécifier le chemin d'accès complet sur la ligne de commande du Mpgo.You must either add the path to Visual Studio or specify the full path on the Mpgo command line. Vous pouvez utiliser le paramètre –Scenario ou –Import dans l'événement après génération dans Visual Studio.You can use either the –Scenario or the –Import parameter in the post-build event in Visual Studio. Toutefois, le processus habituel consiste à utiliser –Scenario une seule fois à partir de l’invite de commandes développeur pour Visual Studio, puis à utiliser –Import pour mettre à jour les assemblys optimisés après chaque génération, par exemple : "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 Developer Command Prompt for Visual Studio, 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)\".

ExemplesExamples

La commande Mpgoe.exe suivante d’une invite de commandes développeur pour Visual Studio optimise une application pour les taxes :The following Mpgo.exe command from a Developer Command Prompt for Visual Studio optimizes a tax application:

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

La commande Mpgo.exe suivante optimise une application pour le son :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  

La commande Mpgo.exe suivante utilise des données d'assemblys précédemment optimisés pour optimiser des versions plus récentes des assemblys :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  

Voir aussiSee also