Informationen
Das angeforderte Thema wird unten angezeigt. Es ist jedoch nicht in dieser Bibliothek vorhanden.
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Mpgo.exe (verwaltetes, profilgesteuertes Optimierungstool)

.NET Framework 4.5

Das Managed Profile Guided Optimization Tool (Mpgo.exe) ist ein Befehlszeilentool, das allgemeine Endbenutzerszenarien verwendet, um die vom Native Image Generator (Ngen.exe) erstellten Assemblys systemeigener Abbilder zu optimieren Mit diesem Tool können Sie Trainingsszenarien auszuführen, die Profildaten generieren. Der Native Image Generator (Ngen.exe) verwendet diese Daten, um die generierten Anwendungsassemblys systemeigener Abbilder zu optimieren. Ein Trainingsszenario ist die Testausführung einer erwarteten Nutzung Ihrer Anwendung. Mpgo.exe ist in Visual Studio Ultimate 2012 und höheren Versionen verfügbar. Ab Visual Studio 2013 können Sie Mpgo.exe auch zum Optimieren von Windows Store-Apps verwenden.

Profilgesteuerte Optimierung verbessert Anwendungsstartzeit, Arbeitsspeicherauslastung (Workingsetgröße) und Durchsatz, indem Daten aus Trainingsszenarien erfasst und verwendet werden, um den Aufbau von systemeigenen Abbildern zu optimieren.

Wenn Sie Leistungsprobleme bei Startzeit oder Workingsetgröße für Intermediate Language (IL)-Assemblys erkennen, empfehlen wir Ihnen zunächst die Verwendung von Ngen.exe, um Just-in-Time-Kompilierungsaufwände auszuschließen und die gemeinsame Verwendung von Code zu erleichtern. Wenn Sie weitere Verbesserungen benötigen, können Sie Mpgo.exe weiter zur Optimierung der Anwendung verwenden. Sie können die Leistungsdaten von nicht optimiertem Assemblys systemeigener Abbilder als Baseline verwenden, um die Leistungszuwächse zu ermitteln. Das Verwenden von Mpgo.exe kann möglicherweise zu kürzeren Kaltstartzeiten und einer geringeren Workingsetgröße führen. Durch Mpgo.exe werden IL-Assemblys Informationen hinzugefügt, die von Ngen.exe verwendet werden, um optimierte Assemblys von systemeigenen Abbildern zu erstellen. Weitere Informationen finden Sie im Eintrag Verbessern der Start-Leistung für Desktopanwendungen im .NET-Blog.

Sie können Mpgo.exe von der Visual Studio-Entwicklereingabeaufforderung wie folgt ausführen (mit Administratoranmeldeinformationen).

Für Desktop-Apps:

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

Für Windows Store-Apps:

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

Groß-/Kleinschreibung wird für alle Argumente von Mpgo.exe ignoriert. Befehlen wird ein Bindestrich vorangestellt.

Hinweis Hinweis

Sie können entweder –Scenario oder –Import als erforderlichen Befehl verwenden, jedoch nicht beide gleichzeitig. Es wird kein erforderlicher Parameter verwendet, wenn Sie die –Reset-Option angeben.

Erforderlicher Parameter

Beschreibung

-Scenario <befehl>

– oder –

-Scenario <packageName>

- oder -

-Import <verzeichnis>

Für Desktop-Apps verwenden Sie –Scenario zum Angeben des Befehls zum Ausführen der Anwendung, die Sie optimieren möchten, einschließlich aller Befehlszeilenargumente. Verwenden Sie drei Elemente von doppelten Anführungszeichen für den Befehl, wenn er einen Pfad angibt, der Leerzeichen enthält, beispielsweise mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files". Verwenden Sie keine doppelten Anführungszeichen, da sie nicht ordnungsgemäß funktionieren, wenn der Befehl Leerzeichen enthält.

- oder -

Für Windows Store-Apps verwenden Sie –Scenario zum Angeben des Pakets, für das Sie Profilinformationen generieren möchten. Wenn Sie den Paketanzeigenamen oder den Paketfamiliennamen anstelle des vollständigen Paketnamens angeben, wählt Mpgo.exe das Paket aus, das mit dem von Ihnen eingegebenen Namen übereinstimmt, sofern nur eine Übereinstimmung vorliegt. Wenn mehrere Pakete mit dem angegebenen Namen übereinstimmen, werden Sie von Mpgo.exe aufgefordert, ein Paket auszuwählen.

– oder –

Verwenden Sie -Import zum Angeben, dass Optimierungsdaten aus zuvor optimiertem Assemblys zum Optimieren der Assemblys in der -AssemblyList verwendet werden sollen. Verzeichnis gibt das Verzeichnis an, das die zuvor optimierten Dateien enthält. Die in der –AssemblyList oder –AssemblyListFile angegebenen Assemblys sind die neuen Versionen der mit den Daten aus den importierten Dateien zu optimierenden Assemblys. Das Verwenden der Optimierungsdaten aus früheren Versionen der Assemblys ermöglicht Ihnen die Optimierung neuer Versionen, ohne erneute Ausführung des Szenarios. Wenn die importierten und die neuen Assemblys jedoch erheblich unterschiedlichen Code enthalten, sind die Optimierungsdaten nicht effektiv. Die Assemblynamen, die in –AssemblyList oder –AssemblyListFile angegeben werden, müssen im Verzeichnis vorhanden sein, das durch –ImportVerzeichnis angegeben wird. Verwenden Sie drei Elemente von doppelten Anführungszeichen für Verzeichnis, wenn es einen Pfad angibt, der Leerzeichen enthält.

Sie müssen entweder –Scenario oder –Import angeben, jedoch nicht beide.

-OutDir <verzeichnis>

Das Verzeichnis, in dem die optimierten Assemblys gespeichert werden sollen. Wenn eine Assembly bereits im Ausgabeverzeichnisordner vorhanden ist, wird eine neue Kopie erstellt und eine Indexnummer an den Namen angefügt, beispielsweise assemblyname-1.exe. Verwenden Sie doppelte Anführungszeichen um verzeichnis, wenn es einen Pfad angibt, der Leerzeichen enthält.

-AssemblyList <assembly1 assembly2 ...>

– oder –

-AssemblyListFile <file>

Eine Liste von Assemblys (einschließlich EXE- und DLL-Dateien), getrennt durch Leerzeichen, von denen Sie Profilinformationen sammeln möchten. Sie können C:\Dir\*.dll oder *.dll angeben, um alle Assemblys im festgelegten oder aktuellen Arbeitsverzeichnis auszuwählen. Weitere Informationen finden Sie im Abschnitt Hinweise.

– oder –

Eine Textdatei, die die Liste der Assemblys enthält, für die Sie Profilinformationen sammeln möchten, aufgelistet wird eine Assembly pro Zeile. Wenn ein Assemblyname mit einem Bindestrich (-) beginnt, verwenden Sie eine Assemblydateiliste oder benennen Sie die Assembly um.

-AppID <appId>

Die ID der Anwendung im angegebenen Paket. Wenn Sie Platzhalter (*) verwenden, versucht Mpgo.exe die AppIDs im Paket aufzulisten und wird bei einem Fehlschlagen auf <package_family_name>!App zurückgreifen. Wenn Sie eine Zeichenfolge mit einem vorangestellten Ausrufezeichen (!) angeben, wird Mpgo.exe den Paketfamiliennamen mit dem übergebenen Argument verketten.

-Timeout <seconds>

Die Zeitspanne, in der die Windows Store-App ausgeführt werden kann, bevor die App beendet wird.

Optionale Parameter

Beschreibung

-64bit

Instrumentiert die Assemblys für 64-Bit-Systeme. Sie müssen diesen Parameter für 64-Bit-Assemblys angeben, auch wenn Ihre Assembly sich selbst als 64-Bit deklariert.

-ExeConfig <filename>

Gibt die Konfigurationsdatei an, die in Ihrem Szenario verwendet wird, um Versions- und Loaderinformationen bereitzustellen.

-f

Erzwingt die Aufnahme der Profildaten in eine binäre Assembly, selbst wenn diese signiert ist. Wenn die Assembly signiert ist, muss sie erneut signiert werden, andernfalls kann die Assembly nicht geladen oder ausgeführt werden.

-Reset

Setzt die Umgebung zurück, um so sicherzustellen, dass eine abgebrochene Sitzung zur Profilerstellung keine Assemblys beeinflusst, und wird dann beendet. Die Umgebung wird standardmäßig vor und nach einer Profilerstellungssitzung zurückgesetzt.

-Timeout <Zeit in Sekunden>

Gibt die Profilerstellungsdauer in Sekunden an. Verwenden Sie einen Wert, der etwas über den beobachteten Startzeiten für GUI-Anwendungen liegt. Am Ende des Timeouts werden die Profildaten erfasst, obwohl die Anwendung weiterhin ausgeführt wird. Wenn Sie diese Option nicht festlegen, wird das Erstellen eines Profils bis zum Beenden der Anwendung fortgesetzt und die Daten dann aufgezeichnet.

-LeaveNativeImages

Gibt an, dass die systemeigenen instrumentierten Abbilder nach dem Ausführen des Szenarios nicht entfernt werden sollen. Diese Option wird hauptsächlich verwendet, wenn Sie die Anwendung abrufen, die Sie für das laufende Szenario angegeben haben. Es verhindert die Neuerstellung von systemeigenen Abbildern für spätere Ausführungen von Mpgo.exe. Wenn Sie die Ausführung der Anwendung abgeschlossen haben, sind bei Angabe dieser Option möglicherweise verwaiste systemeigene Abbilder im Cache vorhanden. Führen Sie in diesem Fall Mpgo.exe mit demselben Szenario und Assemblys erneut aus und verwenden Sie dabei den –RemoveNativeImages-Parameter, um diese systemeigenen Abbilder zu entfernen.

-RemoveNativeImages

Bereinigt eine Ausführung mit der Angabe –LeaveNativeImages. Wenn Sie -RemoveNativeImages angeben, werden von Mpgo.exe alle Argumente außer -64bit und –AssemblyList ignoriert, alle instrumentierten systemeigenen Abbilder entfernt und das Programm beendet.

Sie können sowohl –AssemblyList als auch - AssemblyListFile mehrmals in der Befehlszeile verwenden.

Wenn Sie keine vollständigen Pfadnamen bei der Angabe der Assemblys angeben, sucht Mpgo.exe im aktuellen Verzeichnis. Wenn Sie einen falschen Pfad angeben, wird von Mpgo.exe eine Fehlermeldung ausgegeben, jedoch mit der Generierung der Daten für andere Assemblys fortgefahren. Wenn Sie eine Assembly angeben, die nicht während des Trainingsszenarios geladen wurde, werden keine Trainingsdaten für diese Assembly generiert.

Wenn sich eine Assembly aus der Liste im globalen Assemblycache befindet, wird sie nicht aktualisiert, um die Profilinformationen zu enthalten. Entfernen Sie sie aus dem globalen Assemblycache zum Erfassen von Profilinformationen.

Die Verwendung von Ngen.exe und von Mpgo.exe wird nur für große verwaltete Anwendungen empfohlen, da der Vorteil vorkompilierter systemeigener Abbilder in der Regel nur deutlich wird, wenn ein erheblicher Anteil an JIT-Kompilierung zur Laufzeit eingespart wird. Mpgo.exe mit "Hello World"-Anwendungen auszuführen, die kein sehr umfangreiches Workingset aufweisen, bringt keine Vorteile, möglicherweise kann Mpgo.exe sogar beim Erfassen der Profildaten fehlschlagen.

Hinweis Hinweis

Ngen.exe und Mpgo.exe werden für ASP.NET-Anwendungen und Windows Communication Foundation (WCF)-Dienste nicht empfohlen.

So verwenden Sie Mpgo.exe

  1. Verwenden Sie einen Computer, auf dem Visual Studio Ultimate 2012 und Ihre Anwendung installiert ist.

  2. Führen Sie Mpgo.exe als Administrator mit den erforderlichen Parametern aus. Beispielbefehle finden Sie im nächsten Abschnitt.

    Die optimierten Intermediate Language (IL)- Assemblys werden in dem Ordner erstellt, der durch den –OutDir-Parameter angegeben wird (in den Beispielen ist dies der Ordner C:\Optimized ).

  3. Ersetzen Sie die für Ngen.exe verwendeten IL-Assemblys mit den neuen IL-Assemblys, die die Profilinformationen von dem Verzeichnis enthalten, das mit –OutDir angegeben wurde.

  4. Das Anwendungssetup (mithilfe der von Mpgo.exe bereitgestellten Abbilder) installiert optimierte systemeigene Abbilder.

Workflowvorschläge

  1. Erstellen Sie einen Satz optimierter IL-Assemblys, indem Sie Mpgo.exe mit dem –Scenario-Parameter verwenden.

  2. Fügen Sie der Quellcodeverwaltung die optimierten IL-Assemblys hinzu.

  3. Im Buildprozess rufen Sie Mpgo.exe mit dem –Import-Parameter als Postbuildschritt auf, um optimierte IL-Abbilder zu generieren, die Ngen.exe übergeben werden.

Dieser Prozess stellt sicher, dass alle Assemblys optimierte Daten haben. Durch häufiges Einchecken aktualisierter optimierter Assemblys (Schritte 1 und 2) werden die Leistungszahlen für die gesamte Produktentwicklung konsistenter.

Verwenden von Mpgo.exe in Visual Studio

Sie können Mpgo.exe von Visual Studio (siehe den Artikel Gewusst wie: Angeben von Buildereignissen (C#)) mit den folgenden Einschränkungen ausführen:

  • Sie können Pfade in Anführungszeichen nicht mit nachgestellten Schrägstrichen verwenden, da Visual Studio-Makros standardmäßig nachgestellte Schrägstriche verwenden. (Beispielsweise ist –OutDir "C:\Output Folder\" ungültig.) Um diese Einschränkung zu umgehen, können Sie den nachgestellten Schrägstrich mit einem Escapezeichen versehen. (Verwenden Sie beispielsweise -OutDir "$(OutDir)\" anstelle von.)

  • Standardmäßig befindet sich Mpgo.exe nicht im Visual Studio-Buildpfad. Sie müssen entweder Visual Studio den Pfad hinzufügen oder auf der Mpgo-Befehlszeile den vollständigen Pfad angeben. Sie können entweder –Scenario oder –Import als Parameter im Postbuildereignis in Visual Studio angeben. Allerdings besteht der übliche Prozess aus dem einmaligen Verwenden von –Scenario in einer Visual Studio-Entwicklereingabeaufforderung und anschließendem Verwenden von –Import, um nach jedem Build die optimierten Assemblys zu aktualisieren, beispielsweise "C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\".

Der folgende Mpgo.exe-Befehl aus einer Visual Studio-Entwicklereingabeaufforderung optimiert eine Steuer-Anwendung:

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

Der folgende Mpgo.exe-Befehl optimiert eine Sound-Anwendung:

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

Der folgende Mpgo.exe-Befehl verwendet Daten aus zuvor optimierten Assemblys, um spätere Versionen der Assemblys zu optimieren:

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

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.