Dela via


Mpgo.exe (guidat optimeringsverktyg för hanterad profil)

Det guidade optimeringsverktyget för hanterad profil (Mpgo.exe) är ett kommandoradsverktyg som använder vanliga slutanvändarscenarier för att optimera de interna bildsammansättningarna som skapas av den interna avbildningsgeneratorn (Ngen.exe). Med det här verktyget kan du köra träningsscenarier som genererar profildata. Den inbyggda avbildningsgeneratorn (Ngen.exe) använder dessa data för att optimera sina genererade interna bildprogramsammansättningar. Ett träningsscenario är en utvärderingsversion av en förväntad användning av ditt program. Mpgo.exe finns i Visual Studio Ultimate 2012 och senare versioner. Från och med Visual Studio 2013 kan du också använda Mpgo.exe för att optimera Windows 8.x Store-appar.

Profilstyrd optimering förbättrar programmets starttid, minnesanvändning (storlek på arbetsuppsättning) och dataflöde genom att samla in data från träningsscenarier och använda dem för att optimera layouten för interna bilder.

När du stöter på prestandaproblem med starttid och arbetsuppsättningsstorlek för il-sammansättningar (Intermediate Language) rekommenderar vi att du först använder Ngen.exe för att eliminera jit-kompileringskostnader (just-in-time) och för att underlätta koddelning. Om du behöver ytterligare förbättringar kan du sedan använda Mpgo.exe för att optimera programmet ytterligare. Du kan använda prestandadata från de ooptimerade inbyggda bildsammansättningarna som baslinje för att utvärdera prestandavinster. Om du använder Mpgo.exe kan det leda till snabbare kalla starttider och en mindre arbetsuppsättningsstorlek. Mpgo.exe lägger till information i IL-sammansättningar som Ngen.exe använder för att skapa optimerade interna avbildningssammansättningar. Mer information finns i posten Förbättra startprestanda för dina skrivbordsprogram i .NET-bloggen.

Det här verktyget installeras automatiskt med Visual Studio. Om du vill köra verktyget använder du Developer Command Prompt eller Developer PowerShell med administratörsautentiseringsuppgifter.

Ange följande kommando i kommandotolken:

För skrivbordsappar:

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

För Windows 8.x Store-appar:

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

Parametrar

Alla argument för att Mpgo.exe är skiftlägesokänsliga. Kommandon är prefix med ett bindestreck.

Anteckning

Du kan använda antingen –Scenario eller –Import som ett obligatoriskt kommando, men inte båda. Ingen av de obligatoriska parametrarna används om du anger alternativet –Reset .

Obligatorisk parameter Description
-Scenario<Kommandot>

—eller—

-Scenario<packageName>

\- eller -

-Import<Katalog>
För skrivbordsappar använder du –Scenario för att ange kommandot för att köra det program som du vill optimera, inklusive eventuella kommandoradsargument. Använd tre uppsättningar med dubbla citattecken runt kommandot om den anger en sökväg som innehåller blanksteg. till exempel: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files". Använd inte dubbla citattecken. de fungerar inte korrekt om kommandot innehåller blanksteg.

\- eller -

För Windows 8.x Store-appar använder –Scenario du för att ange det paket som du vill generera profilinformation för. Om du anger paketets visningsnamn eller paketfamiljenamnet i stället för det fullständiga paketnamnet väljer Mpgo.exe det paket som matchar det namn som du angav om det bara finns en matchning. Om flera paket matchar det angivna namnet uppmanar Mpgo.exe dig att välja ett paket.

—eller—

Använd -Import för att ange att optimeringsdata från tidigare optimerade sammansättningar ska användas för att optimera sammansättningarna i -AssemblyList. katalogen anger den katalog som innehåller de tidigare optimerade filerna. Sammansättningarna som anges i –AssemblyList eller –AssemblyListFile är de nya versionerna av sammansättningarna som ska optimeras med hjälp av data från de importerade filerna. Med hjälp av optimeringsdata från äldre versioner av sammansättningar kan du optimera nyare versioner av sammansättningar utan att köra scenariot igen. Men om de importerade och målsammansättningarna innehåller betydligt olika kod blir optimeringsdata ineffektiva. Sammansättningsnamnen som anges i –AssemblyList eller –AssemblyListFile måste finnas i katalogen som anges av –Importkatalogen. Använd tre uppsättningar med dubbla citattecken runt katalogen om den anger en sökväg som innehåller blanksteg.

Du måste ange antingen –Scenario eller –Import, men inte båda parametrarna.
-OutDir<Katalog> Den katalog där de optimerade sammansättningarna ska placeras. Om det redan finns en sammansättning i mappen för utdatakatalogen skapas en ny kopia och ett indexnummer läggs till i dess namn. till exempel: assemblyname-1.exe. Använd dubbla citattecken runt katalogen om den anger en sökväg som innehåller blanksteg.
-AssemblyList<assembly1 assembly2 ...>

—eller—

-AssemblyListFile<Filen>
En lista över sammansättningar (inklusive .exe och .dll filer), avgränsade med blanksteg, som du vill samla in profilinformation om. Du kan ange C:\Dir\*.dll eller *.dll välja alla sammansättningar i den avsedda eller aktuella arbetskatalogen. Mer information finns i avsnittet Kommentarer.

—eller—

En textfil som innehåller listan över sammansättningar som du vill samla in profilinformation om, en sammansättning per rad. Om ett sammansättningsnamn börjar med ett bindestreck (-) använder du en sammansättningsfillista eller byter namn på sammansättningen.
-AppID<Appid> ID:t för programmet i det angivna paketet. Om du använder jokertecknet (*) försöker Mpgo.exe räkna upp AppID:erna i paketet och återgår till <package_family_name>! Appen om den misslyckas. Om du anger en sträng som föregås av ett utropstecken (!) sammanfogar Mpgo.exe paketfamiljenamnet med det angivna argumentet.
-Timeout<Sekunder> Hur lång tid det tar att köra Windows 8.x Store-appen innan appen avslutas.
Valfri parameter Description
-64bit Instrumenterar sammansättningarna för 64-bitarssystem. Du måste ange den här parametern för 64-bitars sammansättningar, även om sammansättningen deklarerar sig som 64-bitars.
-ExeConfig<Filnamn> Anger den konfigurationsfil som ditt scenario använder för att tillhandahålla information om version och inläsare.
-f Tvingar inkluderingen av profildata i en binär sammansättning, även om den är signerad. Om sammansättningen är signerad måste den signeras igen. Annars går det inte att läsa in och köra sammansättningen.
-Reset Återställer miljön för att se till att en avbruten profileringssession inte påverkar dina sammansättningar och sedan avslutas. Miljön återställs som standard före och efter en profileringssession.
-Timeout<tid i sekunder> Anger profileringens varaktighet i sekunder. Använd ett värde som är något mer än dina observerade starttider för GUI-program. I slutet av tidsgränsen registreras profildata även om programmet fortsätter att köras. Om du inte anger det här alternativet fortsätter profileringen tills programmet stängs av, då registreras data.
-LeaveNativeImages Anger att de instrumenterade interna avbildningarna inte ska tas bort när scenariot har körts. Det här alternativet används främst när du får det program som du angav för scenariot som körs. Det förhindrar rekreation av interna bilder för efterföljande körningar av Mpgo.exe. När du har kört programmet kan det finnas överblivna interna avbildningar i cacheminnet om du anger det här alternativet. I det här fallet kör du Mpgo.exe med samma scenario och sammansättningslista och använder parametern –RemoveNativeImages för att ta bort dessa interna avbildningar.
-RemoveNativeImages Rensar från en körning där –LeaveNativeImages har angetts. Om du anger -RemoveNativeImagesignorerar Mpgo.exe alla argument utom -64bit och –AssemblyList, och avslutas när alla instrumenterade interna avbildningar har tagits bort.

Kommentarer

Du kan använda både –AssemblyList och - AssemblyListFile flera gånger på kommandoraden.

Om du inte anger fullständiga sökvägsnamn när du anger sammansättningar visas Mpgo.exe i den aktuella katalogen. Om du anger en felaktig sökväg visar Mpgo.exe ett felmeddelande men fortsätter att generera data för andra sammansättningar. Om du anger en sammansättning som inte läses in under träningsscenariot genereras inga träningsdata för den sammansättningen.

Om en sammansättning i listan finns i den globala sammansättningscachen uppdateras den inte för att innehålla profilinformationen. Ta bort den från den globala sammansättningscachen för att samla in profilinformation.

Användning av Ngen.exe och Mpgo.exe rekommenderas endast för stora hanterade program, eftersom fördelen med förkompilerade interna avbildningar vanligtvis bara visas när den eliminerar betydande JIT-kompilering vid körning. Att köra Mpgo.exe på "Hello World"-formatprogram som inte är arbetsintensiva ger inga fördelar, och Mpgo.exe kan till och med misslyckas med att samla in profildata.

Anteckning

Ngen.exe och Mpgo.exe rekommenderas inte för ASP.NET program och WCF-tjänster (Windows Communication Foundation).

Så här använder du Mpgo.exe

  1. Använd en dator som har Visual Studio Ultimate 2012 och ditt program installerat.

  2. Kör Mpgo.exe som administratör med nödvändiga parametrar. Se nästa avsnitt för exempelkommandon.

    De optimerade mellanliggande språksammansättningarna (IL) skapas i mappen som anges av parametern –OutDir (i exemplen C:\Optimized är det här mappen).

  3. Ersätt de IL-sammansättningar som du använde för Ngen.exe med de nya IL-sammansättningarna som innehåller profilinformationen från katalogen som anges av –OutDir.

  4. Programinstallationen (med hjälp av avbildningarna som tillhandahålls av Mpgo.exe) installerar optimerade interna avbildningar.

Föreslaget arbetsflöde

  1. Skapa en uppsättning optimerade IL-sammansättningar med hjälp av Mpgo.exe med parametern –Scenario .

  2. Kontrollera de optimerade IL-sammansättningarna i källkontrollen.

  3. I byggprocessen anropar du Mpgo.exe med parametern –Import som ett steg efter bygget för att generera optimerade IL-avbildningar som ska skickas till Ngen.exe.

Den här processen säkerställer att alla sammansättningar har optimeringsdata. Om du checkar in uppdaterade optimerade sammansättningar (steg 1 och 2) oftare blir prestandasiffrorna mer konsekventa under hela produktutvecklingen.

Använda Mpgo.exe från Visual Studio

Du kan köra Mpgo.exe från Visual Studio (se artikeln Gör så här : Ange build-händelser (C#)) med följande begränsningar:

  • Du kan inte använda citerade sökvägar med avslutande snedstreck, eftersom Visual Studio-makron också använder avslutande snedstreck som standard. (Till exempel –OutDir "C:\Output Folder\" är ogiltigt.) Du kan kringgå den här begränsningen genom att undvika det avslutande snedstrecket. (Använd -OutDir "$(OutDir)\" till exempel i stället.)

  • Som standard finns Mpgo.exe inte på Visual Studio-byggsökvägen. Du måste antingen lägga till sökvägen till Visual Studio eller ange den fullständiga sökvägen på Mpgo-kommandoraden. Du kan använda antingen parametern –Scenario–Import eller i händelsen efter kompilering i Visual Studio. Den typiska processen är dock att använda –Scenario en gång från en kommandotolk för utvecklare för Visual Studio och sedan använda –Import för att uppdatera de optimerade sammansättningarna efter varje version, till exempel: "C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\".

Exempel

Följande Mpgo.exe kommando från en kommandotolk för utvecklare för Visual Studio optimerar ett skatteprogram:

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

Följande Mpgo.exe-kommando optimerar ett ljudprogram:

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

Följande Mpgo.exe-kommando använder data från tidigare optimerade sammansättningar för att optimera nyare versioner av sammansättningarna:

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

Se även