Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’outil d’optimisation guidée du profil managé (Mpgo.exe) est un outil en ligne de commande qui utilise des scénarios d’utilisateur final courants pour optimiser les assemblys d’images natifs créés par le générateur d’images natives (Ngen.exe). Cet outil vous permet d’exécuter des scénarios d’entraînement qui génèrent des données de profil. Le générateur d’images natives (Ngen.exe) utilise ces données pour optimiser ses assemblys d’application d’image native générés. Un scénario de formation est une exécution d’évaluation d’une utilisation attendue de votre application. Mpgo.exe est disponible dans Visual Studio Ultimate 2012 et versions ultérieures. À compter de Visual Studio 2013, vous pouvez également utiliser Mpgo.exe pour optimiser les applications du Windows 8.x Store.
L’optimisation guidée par profil améliore le temps de démarrage de l’application, l’utilisation de la mémoire (taille du jeu de travail) et le débit en collectant des données à partir de scénarios d’apprentissage et en l’utilisant pour optimiser la disposition des images natives.
Lorsque vous rencontrez des problèmes de performances avec l’heure de démarrage et la taille du jeu de travail pour les assemblys IL (Intermediate Language), nous vous recommandons d’utiliser d’abord Ngen.exe pour éliminer les coûts de compilation juste-à-temps (JIT) et faciliter le partage de code. Si vous avez besoin d’améliorations supplémentaires, vous pouvez ensuite utiliser Mpgo.exe pour optimiser davantage votre application. Vous pouvez utiliser les données de performances des assemblys d’images natives non optimisés comme base de référence pour évaluer les gains de performances. L’utilisation de Mpgo.exe peut entraîner des temps de démarrage plus rapides et une taille de jeu de travail plus petite. Mpgo.exe ajoute des informations aux assemblys IL que Ngen.exe utilise pour créer des assemblys d’images natives optimisés. Pour plus d’informations, consultez l’entrée Amélioration des performances de lancement pour vos applications de bureau dans le blog .NET.
Cet outil est installé automatiquement avec Visual Studio. Pour exécuter l’outil, utilisez l’invite de commandes développeur ou Developer PowerShell avec les informations d’identification de l’administrateur.
Entrez la commande suivante à l’invite de commandes :
Pour les applications de bureau :
mpgo -Scenario <command> [-Import <directory>] -AssemblyList <assembly1> <assembly2> ... -OutDir <directory> [options]
Pour les applications du Windows 8.x Store :
mpgo -Scenario <packageName> -AppID <appId> -Timeout <seconds>
Paramètres
Tous les arguments à Mpgo.exe ne respectent pas la casse. Les commandes sont précédées d’un tiret.
Note
Vous pouvez utiliser l’une ou l’autre -Scenario des -Import commandes requises, mais pas les deux. Aucun des paramètres requis n’est utilisé si vous spécifiez l’option -Reset .
| Paramètre obligatoire | Descriptif |
|---|---|
-Scenario
<
commander>— ou — -Scenario
<
packageName>- ou - -Import
<
répertoire> |
Pour les applications de bureau, utilisez -Scenario la commande pour exécuter l’application que vous souhaitez optimiser, y compris les arguments de ligne de commande. Utilisez trois ensembles de guillemets doubles autour de la commande s’il spécifie un chemin d’accès incluant des espaces ; par exemple : 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 fonctionnent pas correctement si la commande inclut des espaces.- ou - Pour les applications du Windows 8.x Store, utilisez cette option -Scenario pour spécifier le package pour lequel vous souhaitez générer des informations de profil. Si vous spécifiez le nom complet du package ou le nom de famille de packages au lieu du nom complet du package, Mpgo.exe sélectionnez le package correspondant au nom que vous avez fourni s’il n’y a qu’une seule correspondance. Si plusieurs packages correspondent au nom spécifié, Mpgo.exe vous invite à choisir un package.— ou — Permet -Import de 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.
spécifie le répertoire qui contient les fichiers précédemment optimisés. Les assemblys spécifiés dans -AssemblyList ou -AssemblyListFile sont les nouvelles versions des assemblys à optimiser à l’aide des données des fichiers importés. L’utilisation des données d’optimisation de l’ancienne version des assemblys vous permet d’optimiser les versions plus récentes d’assemblys sans réexécuter le scénario. Toutefois, si les assemblys importés et cibles incluent un code sensiblement différent, les données d’optimisation sont inefficaces. Les noms d’assembly spécifiés dans -AssemblyList ou -AssemblyListFile doivent être présents dans le répertoire spécifié par -Importle répertoire. Utilisez trois ensembles de guillemets doubles autour du répertoire s’il spécifie un chemin d’accès qui inclut des espaces.Vous devez spécifier l’un ou l’autre -Scenario des paramètres, -Importmais pas les deux. |
-OutDir
<
répertoire> |
Répertoire dans lequel placer les assemblys optimisés. Si un assembly existe déjà dans le dossier du répertoire de sortie, une nouvelle copie est créée et un numéro d’index est ajouté à son nom ; par exemple : assemblyname-1.exe. Utilisez des guillemets doubles autour du répertoire s’il spécifie un chemin d’accès qui contient des espaces. |
-AssemblyList
<
assembly1 assembly2 ...>— ou — -AssemblyListFile
<
lime> |
Liste d’assemblys (y compris les fichiers .exe et .dll), séparés par des espaces, dont vous souhaitez collecter les informations de profil. Vous pouvez spécifier C:\Dir\*.dll ou *.dll sélectionner tous les assemblys dans le répertoire de travail désigné ou actif. Pour plus d’informations, consultez la section Remarques.— ou — Fichier texte qui contient la liste des assemblys que vous souhaitez collecter des informations de profil sur un assembly par ligne. Si un nom d’assembly commence par un trait d’union (-), utilisez une liste de fichiers d’assembly ou renommez l’assembly. |
-AppID
<
appId> |
ID de l’application dans le package spécifié. Si vous utilisez le caractère générique (*), Mpgo.exe essaie d’énumérer les ID d’application dans le package et revient à <package_family_name> ! Application en cas d’échec. Si vous spécifiez une chaîne précédée d’un point d’exclamation ( !), Mpgo.exe concatène le nom de la famille de packages avec l’argument fourni. |
-Timeout
<
Secondes> |
Durée d’exécution de l’application Windows 8.x Store avant la fermeture de l’application. |
| Paramètre facultatif | Descriptif |
|---|---|
-64bit |
Instrumente les assemblys pour les systèmes 64 bits. Vous devez spécifier ce paramètre pour les assemblys 64 bits, même si votre assembly se déclare en tant que 64 bits. |
-ExeConfig
<
Fichier> |
Spécifie le fichier de configuration que votre scénario utilise pour fournir des informations de version et de chargeur. |
-f |
Force l’inclusion des données de profil dans un assembly binaire, même si elle est signée. Si l’assembly est signé, il doit être ré-signé ; sinon, l’assembly ne parvient pas à charger et à s’exécuter. |
-Reset |
Réinitialise l’environnement pour vous assurer qu’une session de profilage abandonnée n’affecte pas vos assemblys, puis quitte. L’environnement est réinitialisé par défaut avant et après une session de profilage. |
-Timeout
<
durée en secondes> |
Spécifie la durée du profilage en secondes. Utilisez une valeur légèrement supérieure à vos heures de démarrage observées pour les applications GUI. À la fin du délai d’attente, les données de profil sont enregistrées bien que l’application continue à s’exécuter. Si vous ne définissez pas cette option, le profilage se poursuit jusqu’à l’arrêt de l’application, auquel cas les données seront enregistrées. |
-LeaveNativeImages |
Spécifie que les images natives instrumentées ne doivent pas être supprimées après l’exécution du scénario. Cette option est principalement utilisée lorsque vous obtenez l’application que vous avez spécifiée pour le scénario en cours d’exécution. Elle empêchera la récréation d’images natives pour les exécutions ultérieures de Mpgo.exe. Une fois que 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. Dans ce cas, exécutez Mpgo.exe avec le même scénario et la même liste d’assemblys et utilisez le -RemoveNativeImages paramètre pour supprimer ces images natives. |
-RemoveNativeImages |
Nettoie à partir d’une exécution où -LeaveNativeImages a été spécifiée. Si vous spécifiez -RemoveNativeImages, Mpgo.exe ignore tous les arguments à l’exception -64bit et -AssemblyListse ferme après avoir supprimé toutes les images natives instrumentées. |
Remarques
Vous pouvez utiliser les deux -AssemblyList et -AssemblyListFile plusieurs fois sur la ligne de commande.
Si vous ne spécifiez pas de noms de chemin d’accès complets lors de la spécification d’assemblys, Mpgo.exe recherche dans le répertoire actif. Si vous spécifiez un chemin d’accès incorrect, Mpgo.exe affiche un message d’erreur, mais continue de générer des données pour d’autres assemblys. Si vous spécifiez un assembly qui n’est pas chargé pendant le scénario d’entraînement, aucune donnée d’apprentissage n’est générée pour cet assembly.
Si un assembly de la liste se trouve dans le Global Assembly Cache, il n’est pas mis à jour pour contenir les informations de profil. Supprimez-le du Global Assembly Cache pour collecter les informations de profil.
L’utilisation de Ngen.exe et de Mpgo.exe est recommandée uniquement pour les applications managées volumineuses, car l’avantage des images natives précompilées n’est généralement visible que lorsqu’elle élimine la compilation JIT significative au moment de l’exécution. L’exécution de Mpgo.exe sur des applications de style « Hello World » qui ne fonctionnent pas intensivement ne fournira aucun avantage, et Mpgo.exe risque même de ne pas collecter les données de profil.
Note
Ngen.exe et Mpgo.exe ne sont pas recommandés pour les applications ASP.NET et les services Windows Communication Foundation (WCF).
Pour utiliser Mpgo.exe
Utilisez un ordinateur sur lequel Visual Studio Ultimate 2012 et votre application sont installées.
Exécutez Mpgo.exe en tant qu’administrateur avec les paramètres nécessaires. Consultez la section suivante pour obtenir des exemples de commandes.
Les assemblys il (Optimized Intermediate Language) sont créés dans le dossier spécifié par le
-OutDirparamètre (dans les exemples, il s’agit duC:\Optimizeddossier).Remplacez les assemblys IL que vous avez utilisés pour Ngen.exe par les nouveaux assemblys IL qui contiennent les informations de profil du répertoire spécifié par
-OutDir.La configuration de l’application (à l’aide des images fournies par Mpgo.exe) installe des images natives optimisées.
Flux de travail suggéré
Créez un ensemble d’assemblys IL optimisés à l’aide de Mpgo.exe avec le
-Scenarioparamètre.Vérifiez les assemblys IL optimisés dans le contrôle de code source.
Dans le processus de génération, appelez Mpgo.exe avec le
-Importparamètre en tant qu’étape post-build pour générer des images IL optimisées à passer à Ngen.exe.
Ce processus garantit que tous les assemblys ont des données d’optimisation. Si vous vérifiez les assemblys optimisés mis à jour (étapes 1 et 2) plus fréquemment, les numéros de performances sont plus cohérents tout au long du développement de produits.
Utilisation de Mpgo.exe à partir de Visual Studio
Vous pouvez exécuter Mpgo.exe à partir de Visual Studio (consultez l’article How to : Specify Build Events (C#)) avec les restrictions suivantes :
Vous ne pouvez pas utiliser de chemins entre guillemets avec des marques obliques de fin, car les macros Visual Studio utilisent également des marques de barre oblique de fin par défaut. (Par exemple,
-OutDir "C:\Output Folder\"n’est pas valide.) Pour contourner cette restriction, vous pouvez échapper à la barre oblique de fin. (Par exemple, utilisez-OutDir "$(OutDir)\"à la place.)Par défaut, Mpgo.exe n’est pas sur le chemin de build Visual Studio. Vous devez ajouter le chemin d’accès à Visual Studio ou spécifier le chemin complet sur la ligne de commande Mpgo. Vous pouvez utiliser le ou le
-Scenario-Importparamètre dans l’événement post-build dans Visual Studio. Toutefois, le processus classique consiste à utiliser-Scenarioune seule fois à partir d’une invite de commandes développeur pour Visual Studio, puis-Importà mettre à jour les assemblys optimisés après chaque build ; par exemple :"C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\".
Examples
La commande Mpgo.exe suivante à partir d’une invite de commandes développeur pour Visual Studio optimise une application fiscale :
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 sonore :
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 provenant d’assemblys précédemment optimisés pour optimiser les versions plus récentes des assemblys :
mpgo.exe -import "C:\Optimized" -assemblylist "C:\MyApp\MyTax.dll" "C:\MyApp\MyTaxUtil2011.dll" -outdir C:\ReOptimized