Návod: Profilování aplikací
Tento návod ukazuje, jak profilovat aplikaci a najít tak problémy s výkonem.
V tomto návodu budete provedeni procesem profilování spravované aplikace a použitím vzorkování a instrumentace k izolaci a identifikaci problému s výkonem aplikace.
V tomto návodu budete provádět následující kroky:
Profilování aplikace pomocí metody vzorkování.
Analýza vzorkovaných výsledků profilování a nalezení a oprava problému s výkonem.
Profilování aplikace pomocí metody instrumentace.
Analýza instrumentovaných výsledků profilování a nalezení a oprava problému s výkonem.
Požadavky
Středně pokročilá znalost jazyka C#.
Kopie příkladu Ukázka PeopleTrax (nástroje pro profilaci).
Pro práci s informacemi poskytnutými profilováním je vhodné mít po ruce informace o ladících symbolech.
Profilování pomocí metody odběru vzorků
Vzorkování je metoda profilování, při níž je dotyčný proces pravidelně žádán o určení aktivní funkce.Výsledná data poskytují počet, jak často byla dotyčná funkce během vzorkování procesu na vrcholu zásobníku volání.
Profilování aplikace pomocí metody vzorkování
Spusťte aplikaci Visual Studio s oprávněními správce.Spuštění jako správce je pro profilování vyžadováno.
Otevřete řešení PeopleTrax.
Řešení PeopleTrax nyní zaplňuje Průzkumník řešení.
Nastavte konfigurační nastavení projektu na Release.
Pro zjišťování problému s výkonem aplikace by mělo být použito sestavení Release.Sestavení Release je pro profilování doporučeno, protože sestavení Debug v sobě obsahuje dodatečné informace, které mohou nepříznivě ovlivnit výkon a kvůli kterým není představa o problémech s výkonem přesná.
V nabídce Analyzovat klikněte na možnost Spustit Průvodce výkonem.
Zobrazí se Průvodce výkonem.
Ujistěte se, že je zvoleno Vzorkování CPU (doporučeno) a klikněte na tlačítko Další.
V seznamu Kterou aplikace chcete profilovat zvolte PeopleTrax a klikněte na tlačítko Další.
Aplikace Visual Studio sestaví projekt a spustí profilování aplikace.Objeví se okno aplikace PeopleTrax.
Klikněte na tlačítko Get People.
Klikněte na tlačítko ExportovatData.
Aplikace Poznámkový blok otevře a zobrazí nový soubor, který obsahuje exportovaná data z aplikace PeopleTrax.
Ukončete program Poznámkový blok a poté ukončete aplikaci PeopleTrax .
Profiler generuje soubor dat profilování, vypíše název souborů v oddíle Sestavy okna Průzkumníku výkonu a automaticky načte zobrazení Souhrn souboru dat v hlavním okně aplikace Visual Studio.
Analýza vzorkovaných výsledků profilování
Zobrazení Souhrn zobrazuje časovou osu využití procesoru během profilování, seznam Kritická cesta představující větev stromu volání aplikace, která byla nejaktivnější, a seznam Funkcí odvádějících nejvíce jednotlivé práce ukazující funkce, které byly nejvíce vzorkovány během spouštění kódu v jejich vlastním těle.
Prohlédněte si seznam Kritická cesta a povšimněte si, že metoda PeopleNS.People.GetNames je funkce programu PeopleTrax nejbližší konci seznamu.Její umístění ji činí dobrým kandidátem pro analýzu.Zobrazte podrobnosti funkce GetNames v zobrazení Podrobnosti funkce kliknutím na její název.
Zobrazení Podrobnosti funkce obsahuje dvě okna.Okno rozdělení náročnosti poskytuje grafické zobrazení práce odvedené funkcí, práce odvedené funkcemi, které volala, a příspěvek funkcí, které funkci volaly, do počtu vzorkovaných instancí.Funkci, na kterou je zobrazení zaměřeno, lze změnit kliknutím na její název.Lze například kliknout na funkci PeopleNS.People.GetPeople a zvolit tak funkci GetPeople.
Okno Zobrazení kódu funkce ukazuje zdrojový kód funkce, je-li k dispozici, a zvýrazňuje nejnáročnější řádky ve vybrané funkci.Při zvolení funkce GetNames lze vidět, že tato funkce načítá řetězec ze zdrojů aplikace a poté používá funkci StringReader pro přidání každého řádku řetězce do instance třídy ArrayList.Neexistuje žádný zjevný způsob, jak tuto funkci optimalizovat.
Jelikož je funkce PeopleNS.People.GetPeople pouze volajícím funkce GetNames, zobrazte kód funkce GetPeople kliknutím na ni v okně rozdělení náročnosti.Tato metoda vrací instanci třídy ArrayList objektů PersonInformationNS.PersonInformation z názvů lidí a společností vytvořenou funkcí GetNames.Funkce GetNames je však volána dvakrát pokaždé, kdy je vytvořen objekt PersonInformation.Lze vidět, že metodu lze snadno optimalizovat vytvořením seznamů pouze jednou na začátku metody a indexováním těchto seznamů během smyčky vytváření objektu PersonInformation.
S kódem ukázkové aplikace je poskytována alternativní optimalizovaná verze funkce GetPeople, kterou lze zavolat přidáním symbolu podmíněného překladu do vlastností sestavení.V okně Průzkumníku řešení klikněte pravým tlačítkem na projekt People a poté klikněte na možnost Vlastnosti.Na stránce vlastností klikněte na Sestavení a do textového pole Symbol podmíněného překladu zadejte OPTIMIZED_GETPEOPLE.V dalším sestavení nahrazuje optimalizovaná verze funkce GetPeople původní metodu.
Spusťte znovu relaci výkonu.Na panelu nástrojů Průzkumníku výkonu klikněte na Spustit s profilováním.Klikněte na tlačítko Get People a poté na tlačítko Export Data.Zavřete okno programu Poznámkový blok, které se zobrazí, a poté ukončete aplikaci People Trax.
Je vygenerován nový soubor dat profilování a v hlavním okně aplikace Visual Studio se zobrazí zobrazení Souhrn nových dat.
Chcete-li porovnat obě profilování, zvolte oba soubory dat v Průzkumníku výkonu, klikněte na ně pravým tlačítkem a zvolte Porovnat sestavy výkonu.V hlavním okně aplikace Visual Studio se zobrazí okno Sestava porovnání.Sloupec Delta zobrazuje změnu v hodnotě výkonu funkcí od původní hodnoty Základní k pozdější hodnotě Porovnání.Hodnoty ke srovnání lze zvolit z rozevíracího seznamu Sloupec.Zvolte Celkové vzorky v %.
Povšimněte si, že metody GetPeople a GetNames vykazují značný nárůst výkonu.
Profilování pomocí metody instrumentace
Instrumentace je metoda profilování, při které profiler vkládá měřící funkce do speciálně sestavených verzí profilovaných binárních souborů.Měřicí funkce shromažďuje v instrumentovaných modulech informace o časech na začátku a konci funkcí a na jejich místech volání.Proces instrumentace je užitečný pro vyšetření problémů spojených se vstupně-výstupními operacemi, například se zápisy na disk nebo komunikací přes síť.Instrumentace poskytuje podrobnější informace než vzorkování, zasahuje však více do provádění procesu a způsobuje větší množství režie.Instrumentované binární soubory jsou rovněž větší než binární soubory pro ladění nebo pro vydání a nejsou určeny pro nasazení.
V tomto oddílu návodu je použita metoda instrumentace pro odhalení dalšího kódu dříve profilované aplikace PeopleTrax, který lze optimalizovat.Pomocí filtru v časové ose zobrazení Souhrn bude analýza zaměřena na scénář exportování dat v profilované aplikaci, v němž je seznam lidí zapsat do souboru aplikace Notepad.
Profilování existující aplikace pomocí metody instrumentace
Otevřete aplikaci PeopleTrax v aplikaci Visual Studio, je-li to zapotřebí.
Ujistěte se, že je aplikace Visual Studio spuštěna s oprávněními správce a že konfigurace sestavení řešení je nastavena na Release.
V Průzkumníku výkonu klikněte na Instrumentaci.
Na panelu nástrojů Průzkumníku výkonu klikněte na tlačítko Spustit s profilováním.
Profiler sestaví projekt a spustí profilování aplikace.Objeví se okno aplikace PeopleTrax.
Klikněte na tlačítko Get People.
Datová mřížka aplikace PeopleTrax se naplní daty.
Počkejte přibližně 10 sekund a klikněte na tlačítko Export Data.
Spustí se aplikace Poznámkový blok a zobrazí se nový soubor obsahující seznam lidí z aplikace PeopleTrax.Čekání umožňuje snadněji identifikovat proceduru exportování dat pro filtrování.
Ukončete program Poznámkový blok a poté ukončete aplikaci PeopleTrax.
Aplikace Visual Studio vygeneruje sestavu relace výkonu (*.vsp).
Analýza instrumentovaných výsledků profilování
Graf časové osy zobrazení Souhrn sestavy ukazuje využití procesoru programem během profilování.Operace exportování dat by měla být velká špička nebo plocha na pravé straně grafu.Relaci výkonu lze filtrovat tak, aby zobrazovala a analyzovala pouze data shromáždění během operace exportování.Klikněte nalevo od bodu grafu, kde operace exportování dat začíná.Klikněte znovu na pravé straně operace.Poté klikněte na odkaz Filtrovat dle výběru v seznamu odkazů na pravé straně časové osy.
Strom Kritická cesta ukazuje, že metoda Concat volaná metodou PeopleTrax.Form1.ExportData spotřebovává velké procento času.Jelikož je metoda System.String.Concat také na vrcholu seznamu Funkce s největším množstvím jednotlivé práce, snížení času stráveného ve funkci je vhodným bodem optimalizace.
Zobrazte více informací v zobrazení Podrobnosti funkce kliknutím dvakrát na funkci System.String.Concat v libovolné ze souhrnných tabulek.
Lze vidět, že metoda PeopleTrax.Form1.ExportData je jediná metoda volající metodu Concat.Kliknutím na metodu PeopleTrax.Form1.ExportData v seznamu Volající funkce zvolte metodu jako cíl zobrazení Podrobnosti funkce.
Prozkoumejte metodu v okně Zobrazení kódu funkce.Povšimněte si, že kód neobsahuje žádná literální volání metody System.String.Concat.Namísto toho je v kódu několikrát použit operand +=, který kompilátor nahrazuje voláními metody System.String.Concat.Libovolná úprava řetězce v rozhraní .NET Framework způsobí přidělení paměti novému řetězci.Rozhraní .NET Framework zahrnuje třídu StringBuilder optimalizovanou pro zřetězování řetězců.
Chcete-li nahradit tuto problematickou oblast optimalizovaným kódem, přidejte do symbolů podmíněného překladu projektu PeopleTrax řetězec OPTIMIZED_EXPORTDATA.
V Průzkumníku řešení klikněte pravým tlačítkem na projekt PeopleTrax a poté na možnost Vlastnosti.
Zobrazí se formulář vlastností projektu PeopleTrax.
Klikněte na kartu Sestavení.
Do textového pole Symboly podmíněného překladu zadejte OPTIMIZED_EXPORTDATA.
Uzavřete formulář vlastností projektu a po vyzvání klikněte na tlačítko Uložit vše.
Po opětovném spuštění aplikace uvidíte označené zvýšení výkonu.Je vhodné spustit relaci profilování znovu, i když je zvýšení výkonu viditelné uživatelem.Revize dat po opravě problému je důležité, protože první problém mohl zakrývat jiný problém.
Viz také
Referenční dokumentace
/Z7, /Zi, /ZI (formát ladicích informací)
Koncepty
Začínáme s nástroji pro profilaci