Mpgo.exe (Nástroj pro optimalizaci spravovaného kódu na základě profilu)
Nástroj pro optimalizaci spravovaného profilu s asistencí (Mpgo.exe) je nástroj příkazového řádku, který používá běžné scénáře koncových uživatelů k optimalizaci sestavení nativních bitových kopií vytvořených generátorem nativních bitových kopií (Ngen.exe). Tento nástroj umožňuje spustit trénovací scénáře, které generují data profilu. Generátor nativních bitových kopií (Ngen.exe) používá tato data k optimalizaci generovaných sestavení aplikací nativní bitové kopie. Trénovací scénář je zkušební spuštění očekávaného použití aplikace. Nástroj Mpgo.exe je k dispozici v sadě Visual Studio Ultimate 2012 a vyšší. Počínaje Visual Studio 2013 můžete také pomocí Mpgo.exe optimalizovat aplikace pro Windows 8.x Store.
Profilováním řízená optimalizace zlepšuje dobu spuštění aplikace, využití paměti (velikost pracovní sady) a propustnost pomocí shromažďování dat z trénovacích scénářů a jejich použitím pro optimalizaci rozložení nativních bitových kopií.
Při výkonových potížích s časem spuštění a velikostí pracovní sady pro sestavení jazyka IL doporučujeme nejdříve použít nástroj Ngen.exe k eliminaci nároků spojených s kompilací JIT a k usnadnění sdílení kódu. V případě potřeby dalšího zlepšení je k optimalizaci aplikace možné použít nástroj Mpgo.exe. Data o výkonu z neoptimalizované nativní bitové kopie sestavení je možné použít jako základ k vyhodnocení zlepšení výkonu. Použití nástroje Mpgo.exe může mít za následek rychlejší úplné spuštění a menší velikost pracovní sady. Nástroj Mpgo.exe přidá informace do sestavení jazyka IL, které nástroj Ngen.exe používá k vytvoření optimalizované nativní bitové kopie sestavení. Další informace najdete v položce Zlepšení výkonu spouštění desktopových aplikací na blogu .NET.
Tento nástroj je automaticky nainstalován se sadou Visual Studio. Ke spuštění nástroje použijte příkazový řádek pro vývojáře nebo Prostředí Developer PowerShell s přihlašovacími údaji správce.
Do příkazového řádku zadejte následující příkaz:
Pro aplikace klasické pracovní plochy:
mpgo –Scenario <command> [-Import <directory>] –AssemblyList <assembly1> <assembly2> ... -OutDir <directory> [options]
Aplikace Windows 8.x Store:
mpgo –Scenario <packageName> -AppID <appId> -Timeout <seconds>
Parametry
Žádný argument nástroje Mpgo.exe nerozlišuje velká a malá písmena. Příkazy začínají pomlčkou.
Poznámka
Jako požadovaný příkaz můžete použít buď nebo –Scenario
–Import
, ale ne oba příkazy. Pokud zadáte možnost, nepoužije se žádný z požadovaných –Reset
parametrů.
Povinný parametr | Description |
---|---|
-Scenario <Příkaz>—nebo— -Scenario <Packagename>-nebo- -Import <Adresář> |
U desktopových aplikací použijte –Scenario příkaz ke spuštění aplikace, kterou chcete optimalizovat, včetně všech argumentů příkazového řádku. Použijte tři sady dvojitých uvozovek kolem příkazu , pokud určuje cestu, která obsahuje mezery; Například: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files" . Nepoužívejte dvojité uvozovky; Nebudou fungovat správně, pokud příkaz obsahuje mezery.-nebo- U aplikací Windows 8.x Store použijte –Scenario k určení balíčku, pro který chcete generovat informace o profilu. Při zadání zobrazovaného názvu balíčku nebo názvu řady balíčků namísto kompletního názvu balíčku nástroj Mpgo.exe vybere balíček, který se shoduje se zadaným názvem, pokud existuje pouze jediná shoda. Pokud zadanému názvu odpovídá více balíčků, nástroj Mpgo.exe vyzve k výběru balíčku.—nebo— Slouží -Import k určení, že data optimalizace z dříve optimalizovaných sestavení se mají používat k optimalizaci sestavení v -AssemblyList nástroji . directory určuje adresář, který obsahuje dříve optimalizované soubory. Sestavení zadaná v –AssemblyList nebo –AssemblyListFile jsou nové verze sestavení, které mají být optimalizovány pomocí dat z importovaných souborů. Použití optimalizačních dat ze starších verzí sestavení umožňuje optimalizovat novější verze sestavení bez opětovného spuštění scénáře. Nicméně, pokud importované a cílové sestavení obsahují výrazně odlišný kód, optimalizační data budou neúčinná. Názvy sestavení zadané v –AssemblyList adresáři nebo –AssemblyListFile musí být přítomny v adresáři určeném adresářem–Import . Pokud určuje cestu, která obsahuje mezery, použijte u adresáře tři sady dvojitých uvozovek.Musíte zadat buď –Scenario nebo –Import , ale ne oba parametry. |
-OutDir <Adresář> |
Adresář, do kterého se umístí optimalizovaná sestavení. Pokud již sestavení existuje ve složce výstupního adresáře, vytvoří se nová kopie a k názvu se připojí číslo indexu; příklad: assemblyname-1.exe. Pokud určuje cestu obsahující mezery, použijte u adresáře uvozovky. |
-AssemblyList <assembly1 assembly2 ...>—nebo— -AssemblyListFile <Soubor> |
Seznam sestavení (včetně souborů .exe a .dll) oddělených mezerami, o kterých je třeba shromáždit profilovací informace. Můžete zadat C:\Dir\*.dll nebo *.dll vybrat všechna sestavení v určeném nebo aktuálním pracovním adresáři. Další informace naleznete v části Poznámky.—nebo— Textový soubor obsahující seznam sestavení, o kterých je třeba shromáždit profilovací informace. Vždy je uvedeno jedno sestavení na řádku. Pokud název sestavení začíná pomlčkou (-), je třeba použít soubor seznamu sestavení nebo sestavení přejmenovat. |
-AppID <Appid> |
ID aplikace v zadaném balíčku. Pokud použijete zástupný znak (*), Mpgo.exe se pokusí vytvořit výčet identifikátorů AppID v balíčku a vrátí se k <package_family_name>! Aplikace, pokud selže. Při zadání řetězce, který má předponu vykřičník (!), bude nástroj Mpgo.exe řetězit název řady balíčků s dodaným argumentem. |
-Timeout <Sekund> |
Doba, po kterou může aplikace Windows 8.x Store běžet před jejím ukončením. |
Volitelný parametr | Description |
---|---|
-64bit |
Upraví sestavení pro 64bitové systémy. Tento parametr je nutné zadat pro 64bitová sestavení, i když sestavení samo sebe prohlašuje za 64bitové. |
-ExeConfig <Název_souboru> |
Určuje konfigurační soubor, který scénář využívá k poskytování informací o verzi a zavaděči. |
-f |
Vynutí zahrnutí dat profilu do binárního sestavení, i pokud je podepsáno. Pokud je sestavení podepsáno, je třeba jej znovu podepsat, jinak se načtení a spuštění sestavení nezdaří. |
-Reset |
Nastaví výchozí hodnoty prostředí pro ujištění, že přerušená relace profilování nemá žádný vliv na sestavení, a poté se ukončí. Prostředí je nastaveno na výchozí hodnoty standardně před relací a po relaci profilování. |
-Timeout <čas v sekundách> |
Určuje dobu profilování v sekundách. Je třeba použít hodnotu, která je mírně vyšší než pozorované časy spuštění grafického uživatelského rozhraní (GUI) aplikace. Na konci časového limitu jsou zaznamenána data profilu, přestože aplikace nadále běží. Pokud tuto možnost nenastavíte, bude profilování pokračovat až do ukončení aplikace, kdy budou data zaznamenána. |
-LeaveNativeImages |
Určuje, že po spuštění scénáře by neměly být odebrány upravené nativní bitové kopie. Tato možnost se používá především u aplikace, která byla určena pro spuštěný scénář. Zabrání opětovnému vytvoření nativních bitových kopií pro následné spuštění nástroje Mpgo.exe. Při zadání této možnosti mohou být po dokončení běhu aplikace ve vyrovnávací paměti přítomny osamocené nativní bitové kopie. V takovém případě spusťte Mpgo.exe se stejným scénářem a seznamem sestavení a pomocí parametru –RemoveNativeImages odeberte tyto nativní bitové kopie. |
-RemoveNativeImages |
Vyčistí spuštění, ve kterém –LeaveNativeImages bylo zadáno. Pokud zadáte -RemoveNativeImages , Mpgo.exe ignoruje všechny argumenty kromě -64bit a a –AssemblyList po odebrání všech instrumentovaných nativních bitových kopií se ukončí. |
Poznámky
Na příkazovém řádku můžete použít obojí i –AssemblyList
- AssemblyListFile
vícekrát.
Pokud při určování sestavení nezadáte úplný název cesty, nástroj Mpgo.exe hledá v aktuálním adresáři. Při zadání nesprávné cesty nástroj Mpgo.exe zobrazí chybovou zprávu, ale stále generuje data pro jiná sestavení. Při zadání sestavení, které není načteno během trénovacího scénáře, nejsou pro toto sestavení generována žádná trénovací data.
Jestliže se sestavení ze seznamu nachází v globální mezipaměti sestavení (GAC), nebude aktualizováno pro zahrnutí informací o profilu. Pro shromáždění informací o profilu je třeba sestavení odebrat z globální mezipaměti sestavení (GAC).
Použití nástrojů Ngen.exe a Mpgo.exe je doporučeno pouze pro velké spravované aplikace, protože výhoda předkompilovaných nativních bitových kopií je obvykle vidět pouze v případě, že eliminuje významné množství kompilace JIT za běhu. Spuštění Mpgo.exe v aplikacích ve stylu "Hello World", které nejsou náročné na pracovní sadu, vám neposkytne žádné výhody a Mpgo.exe dokonce nemusí shromáždit data profilu.
Poznámka
Nástroje Ngen.exe a Mpgo.exe nejsou vhodné pro aplikace ASP.NET a služby Windows Communication Foundation (WCF).
Použití nástroje Mpgo.exe
Použijte počítač, který má nainstalovánu vaši aplikaci a sadu Visual Studio Ultimate 2012.
Spusťte nástroj Mpgo.exe jako správce s nezbytnými parametry. Ukázkové příkazy naleznete v další části.
Sestavení IL (Optimized Intermediate Language) jsou vytvořena ve složce určené parametrem
–OutDir
(v příkladech jeC:\Optimized
to složka ).Nahraďte sestavení IL používaná pro Ngen.exe novými sestaveními IL, která obsahují profilové informace z adresáře určeného parametrem
–OutDir
.Instalace aplikace (pomocí bitových kopií poskytnutých nástrojem Mpgo.exe) nainstaluje optimalizované nativní bitové kopie.
Navrhovaný pracovní postup
Vytvořte sadu optimalizovaných sestavení IL pomocí Mpgo.exe s parametrem
–Scenario
.Zaveďte optimalizovaná sestavení jazyka IL do správy zdrojového kódu.
V procesu sestavení volejte Mpgo.exe s parametrem
–Import
jako krok po sestavení, aby se vygenerovaly optimalizované image IL, které se předají Ngen.exe.
Tento proces zajišťuje, že všechna sestavení mají optimalizační data. Při častějším zavádění aktualizovaných optimalizovaných sestavení (kroky 1 a 2) bude výkon během celého vývoje produktu konzistentnější.
Použití nástroje Mpgo.exe ze sady Visual Studio
Mpgo.exe můžete spustit ze sady Visual Studio (viz článek Postupy: Určení událostí sestavení (C#)) s následujícími omezeními:
Nelze použít cesty v uvozovkách ukončené lomítkem, protože makra sady Visual Studio ve výchozím nastavení také používají koncová lomítka. (Příklad
–OutDir "C:\Output Folder\"
je neplatný.) Pokud chcete toto omezení obejít, můžete koncové lomítko uvozovat řídicím znakem. (Například místo toho použijte-OutDir "$(OutDir)\"
.)Ve výchozím nastavení není nástroj Mpgo.exe v cestě sestavení sady Visual Studio. Je nutné přidat cestu do sady Visual Studio nebo zadat úplnou cestu v příkazovém řádku nástroje Mpgo.exe. V události po sestavení v sadě Visual Studio můžete použít parametr
–Scenario
nebo–Import
. Typickým procesem je však jednorázové použití–Scenario
z vývojářského příkazového řádku pro Visual Studio a následné použití k–Import
aktualizaci optimalizovaných sestavení po každém sestavení, například:"C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\"
.
Příklady
Následující příkaz Mpgo.exe z příkazového řádku pro vývojáře pro Visual Studio optimalizuje daňovou aplikaci:
mpgo –scenario "C:\MyApp\MyTax.exe /params par" –AssemblyList Mytax.dll MyTaxUtil2011.dll –OutDir C:\Optimized –TimeOut 15
Následující příkaz nástroje Mpgo.exe optimalizuje zvukovou aplikaci:
mpgo –scenario "C:\MyApp\wav2wma.exe –input song1.wav –output song1.wma" –AssemblyList transcode.dll –OutDir C:\Optimized –TimeOut 15
Následující příkaz nástroje Mpgo.exe používá data z dříve optimalizovaných sestavení pro optimalizaci novějších verzí sestavení:
mpgo.exe -import "C:\Optimized" -assemblylist "C:\MyApp\MyTax.dll" "C:\MyApp\MyTaxUtil2011.dll" -outdir C:\ReOptimized