Sdílet prostřednictvím


První seznámení s nástroji pro profilaci (C#, Visual Basic, C++, F#)

Nástroje pro měření výkonu aplikací jsou nezbytné pro vývojáře, kteří chtějí optimalizovat kód a zlepšit výkon aplikací. Visual Studio nabízí řadu nástrojů pro profilaci a diagnostiku, které vám pomůžou diagnostikovat využití paměti a procesoru a další problémy na úrovni aplikace. Pomocí těchto nástrojů můžete shromažďovat údaje o výkonu spuštěné aplikace. Profiler vám může pomoct rychle učinit informovaná rozhodnutí tím, že poskytne vizuální znázornění doby provádění a využití procesoru pro vaši aplikaci. V tomto článku se rychle podíváme na nejběžnější nástroje pro profilaci.

Nápovědu k výběru správného nástroje nebo zobrazení podpory nástrojů pro profilaci pro různé typy aplikací najdete v tématu Jaký nástroj mám použít? Kurz, který ukazuje obecný přístup k optimalizaci kódu pomocí nástrojů profilace, najdete v tématu Případová studie: Průvodce začátečníkem pro optimalizaci kódu.

Měření výkonu v buildech vydaných verzí

Nástroje v profileru výkonu mají poskytovat analýzu sestavení vydaných verzí . V Profileru výkonu můžete shromažďovat diagnostické informace, když je aplikace spuštěná, a pak po zastavení aplikace prozkoumat shromážděné informace (po mortem analýze).

Otevřete Profiler výkonu výběrem profileru výkonu ladění>(nebo Alt + F2).

Snímek obrazovky s profilerem výkonu

Snímek obrazovky s profilerem výkonu

Další informace o použití nástroje využití procesoru nebo využití paměti v profileru výkonu oproti nástrojům integrovaným ladicím programem naleznete v tématu Spuštění nástrojů profilace s ladicím programem nebo bez něj.

Mezi nástroje dostupné v profileru výkonu patří:

Pokud chcete zobrazit podporu nástrojů pro profilaci pro různé typy aplikací, podívejte se na nástroj, který mám použít?.

V některých scénářích okno umožňuje vybrat několik nástrojů pro profilaci. Nástroje, jako je využití procesoru, můžou poskytovat doplňková data, která můžete použít k usnadnění analýzy. Profiler příkazového řádku můžete použít také k povolení scénářů zahrnujících více nástrojů pro profilaci.

Měření výkonu při ladění

Nástroje pro profilaci, ke kterým máte přístup během relace ladění, jsou k dispozici v okně Diagnostické nástroje. Okno Diagnostické nástroje se zobrazí automaticky (pokud jste ho nevypnuli). Pokud chcete zobrazit okno, klikněte na Ladit / Windows / Zobrazit diagnostické nástroje (nebo stiskněte Ctrl + Alt + F2). V otevřeném okně můžete vybrat nástroje, pro které chcete shromažďovat data.

Okno Diagnostické nástroje

Při ladění můžete pomocí okna Diagnostické nástroje analyzovat procesor, využití paměti, čítače .NET a zobrazit události, které zobrazují informace související s výkonem.

Okno Diagnostické nástroje

Při ladění můžete pomocí okna Diagnostické nástroje analyzovat využití procesoru a paměti a zobrazit události, které zobrazují informace související s výkonem.

Souhrnné zobrazení diagnostických nástrojů

Souhrnné zobrazení diagnostických nástrojů

Okno Diagnostické nástroje představuje běžný způsob profilování aplikací, ale u buildů vydaných verzí můžete místo toho provést také analýzu aplikace po mortemu. Další informace o různých přístupech najdete v tématu Spuštění nástrojů pro profilaci s ladicím programem nebo bez něj. Pokud chcete zobrazit podporu nástrojů pro profilaci pro různé typy aplikací, podívejte se na nástroj, který mám použít?.

Mezi nástroje dostupné v okně Diagnostické nástroje nebo během relace ladění patří:

Tip

Pomocí opětovného spuštění můžete přeskočit úvodní stránku a automaticky spustit s předchozím nastavením stisknutím kláves Alt+F2 nebo kliknutím na Profiler výkonu ladění>.

Poznámka:

Systém Windows 8 a novější se vyžaduje ke spuštění nástrojů profilace pomocí ladicího programu (okno Diagnostické nástroje ).

Analýza využití procesoru

Nástroj Využití procesoru je dobrým místem pro zahájení analýzy výkonu vaší aplikace. Dozvíte se více o prostředcích procesoru, které vaše aplikace spotřebovává. Můžete použít nástroj využití procesoru integrovaný pomocí ladicího programu nebo nástroj využití procesoru po mortem.

Při použití nástroje Využití procesoru integrovaného ladicího programu otevřete okno Diagnostické nástroje (pokud je zavřené, zvolte Ladit / Windows / Zobrazit diagnostické nástroje). Při ladění otevřete souhrnné zobrazení a vyberte Zaznamenat profil procesoru.

Povolení využití procesoru v diagnostických nástrojích

Povolení využití procesoru v diagnostických nástrojích

Jedním ze způsobů, jak nástroj použít, je nastavit v kódu dvě zarážky, jednu na začátku a druhou na konci funkce nebo oblasti kódu, kterou chcete analyzovat. Zkontrolujte data profilace, když jste pozastaveni na druhé zarážce.

Zobrazení Využití procesoru zobrazuje seznam funkcí seřazených nejdéle spuštěnými, přičemž nejdéle běžící funkce v horní části horních funkcí. Část Horká cesta ukazuje zásobník volání pro funkce, které používají nejvíce procesoru. Tyto seznamy vám můžou pomoct s funkcemi, u kterých dochází k kritickým bodům výkonu.

Zobrazení Využití procesoru v diagnostických nástrojích

Zobrazení Využití procesoru zobrazuje seznam funkcí seřazených nejdéle běžícími, přičemž nejdéle běžící funkce je nahoře. To vám může pomoct s funkcemi, u kterých dochází k kritickým bodům výkonu.

Zobrazení Využití procesoru v diagnostických nástrojích

Klikněte na funkci, která vás zajímá, a zobrazí se podrobnější zobrazení stromu volání se zvýrazněnou vybranou funkcí. Tabulka zobrazuje sloupce s daty, jako je čas strávený ve funkci, včetně nazývaných funkce (celkový procesor) a druhý sloupec, který zobrazuje čas strávený ve funkci s výjimkou funkcí (self CPU). Tato data vám můžou pomoct vyhodnotit, jestli je samotná funkce kritickým bodem výkonu.

Tip

Profiler sady Visual Studio podporuje shromažďování i zobrazení trasování. Profiler může také zobrazit trasování shromážděná dříve jinými nástroji, například dotnet-trace. Dotnet-trace vytváří výsledky vzorkování, nikoli instrumentované trasování. Další informace najdete v tématu dotnet-trace.

Zobrazení

Klikněte na funkci, která vás zajímá, a zobrazí se podrobnější tříokenové zobrazení "motýl" s vybranou funkcí uprostřed okna, volající funkcí vlevo a zavoláním funkcí vpravo. Část Tělo funkce zobrazuje celkovou dobu (a procento času) strávenou v těle funkce s výjimkou času stráveného voláním a voláním funkcí. Tato data vám můžou pomoct vyhodnotit, jestli je samotná funkce kritickým bodem výkonu.

Zobrazení

Analýza využití paměti

Okno Diagnostické nástroje také umožňuje vyhodnotit využití paměti v aplikaci pomocí nástroje Využití paměti. Můžete se například podívat na počet a velikost objektů v haldě. V profileru výkonu můžete použít nástroj Využití paměti integrovaný pomocí ladicího programu nebo nástroj využití paměti po mortem.

Vývojáři .NET si můžou vybrat mezi nástrojem pro přidělování objektů .NET nebo nástrojem využití paměti.

  • Nástroj pro přidělování objektů .NET pomáhá identifikovat vzorce přidělování a anomálie v kódu .NET a pomáhá identifikovat běžné problémy s uvolňováním paměti. Tento nástroj běží jenom jako nástroj po mortem. Tento nástroj můžete spustit na místních nebo vzdálených počítačích.
  • Nástroj Využití paměti je užitečný při identifikaci nevrácené paměti, které nejsou v aplikacích .NET obvykle běžné. Pokud potřebujete použít funkce ladicího programu při kontrole paměti, například krokování kódu, doporučuje se nástroj využití paměti integrovaný ladicím programem.

Pokud chcete analyzovat využití paměti pomocí nástroje Využití paměti, musíte pořídit alespoň jeden snímek paměti. Nejlepší způsob, jak analyzovat paměť, je často pořídit dva snímky; první vpravo před podezřelým problémem s pamětí a druhý snímek hned po výskytu podezřelého problému s pamětí. Pak můžete zobrazit rozdíl dvou snímků a přesně zjistit, co se změnilo. Následující obrázek znázorňuje pořízení snímku pomocí nástroje integrovaného ladicího programu.

Pořízení snímku v diagnostických nástrojích

Pořízení snímku v diagnostických nástrojích

Když vyberete některý z odkazů se šipkami, zobrazí se rozdílové zobrazení haldy (červená šipka Zvýšení využití paměti nahoru zobrazuje rostoucí počet objektů (vlevo) nebo zvětšení velikosti haldy (vpravo).) Pokud kliknete na správný odkaz, zobrazí se rozdílové zobrazení haldy seřazené podle objektů, které zvýšily největší velikost haldy. To vám může pomoct určit problémy s pamětí. Například na obrázku níže se bajty používané ClassHandlersStore objekty zvýšily o 3 492 bajtů ve druhém snímku.

Zobrazení rozdílu haldy diagnostických nástrojů

Zobrazení rozdílu haldy diagnostických nástrojů

Pokud místo toho kliknete na odkaz vlevo v zobrazení Využití paměti, je zobrazení haldy uspořádané podle počtu objektů; objekty určitého typu, které zvýšily nejvíce v čísle, se zobrazí nahoře (seřazené podle sloupce Počet rozdílů ).

Instrumentace

Nástroj Instrumentace se podobá nástroji Využití procesoru s tím rozdílem, že místo využití procesoru poskytuje přesné počty volání a hodinový čas. Metoda instrumentace vyžaduje větší režii než nástroj Využití procesoru. Tento nástroj je k dispozici v profileru výkonu. Otevřete Profiler výkonu výběrem profileru výkonu ladění>(nebo Alt + F2). Další informace naleznete v tématu Instrumentace.

Snímek obrazovky znázorňující data instrumentace .NET

Prozkoumání vstupně-výstupních operací souboru

Nástroj Pro vstupně-výstupní operace souborů vám pomůže pochopit, jak můžete optimalizovat operace vstupně-výstupních operací souborů za účelem zlepšení výkonu vašich aplikací. Pokud se pokoušíte prozkoumat a diagnostikovat pomalé načítání, může vám nový nástroj Pro vstupně-výstupní operace souborů pomoct pochopit, jak vstupně-výstupní operace ovlivňují váš strávený čas. Tento nástroj je k dispozici v profileru výkonu. Otevřete Profiler výkonu výběrem profileru výkonu ladění > (nebo Alt + F2).

Nástroj zobrazuje operace čtení souboru a zápisu do souboru v zobrazení seznamu s kartami.

Snímek obrazovky znázorňující zastavený nástroj Pro vstupně-výstupní operace souborů

Prozkoumání výkonu pomocí popisů výkonu

Nejjednodušší způsob, jak zobrazit informace o výkonu, je často použít popisy výkonu. Pomocí popisů výkonu můžete při interakci s kódem zobrazit informace o výkonu. Můžete zkontrolovat informace, jako je doba trvání události (měřeno od posledního pozastavení ladicího programu nebo při spuštění aplikace). Pokud například procházíte kódem (F10, F11), zobrazí nástroj PerfTips dobu trvání modulu runtime aplikace z předchozí operace do aktuálního kroku.

Snímek obrazovky s popisy výkonu

Snímek obrazovky s popisy výkonu

Pomocí funkce PerfTips můžete zjistit, jak dlouho trvá spuštění bloku kódu nebo jak dlouho trvá dokončení jedné funkce.

Popisy výkonu zobrazují stejné události, které se zobrazují také v zobrazení Události diagnostických nástrojů. V zobrazení Události můžete zobrazit různé události, ke kterým dochází při ladění, například nastavení zarážky nebo operace krokování kódu.

Snímek obrazovky se zobrazením událostí diagnostických nástrojů

Snímek obrazovky se zobrazením událostí diagnostických nástrojů

Poznámka:

Pokud máte Visual Studio Enterprise, můžete na této kartě zobrazit také události IntelliTrace.

Analýza asynchronního kódu (.NET)

Asynchronní nástroj .NET umožňuje analyzovat výkon asynchronního kódu ve vaší aplikaci. Tento nástroj je k dispozici v profileru výkonu. Otevřete Profiler výkonu výběrem profileru výkonu ladění>(nebo Alt + F2).

Nástroj zobrazí každou asynchronní operaci v zobrazení seznamu. Můžete zobrazit informace, jako je počáteční čas, koncový čas a celkový čas asynchronní operace.

Asynchronní nástroj .NET byl zastaven.

Analýza asynchronního kódu (.NET)

Asynchronní nástroj .NET umožňuje analyzovat výkon asynchronního kódu ve vaší aplikaci. Tento nástroj je k dispozici v profileru výkonu. Otevřete Profiler výkonu výběrem profileru výkonu ladění>(nebo Alt + F2).

Nástroj zobrazí každou asynchronní operaci v zobrazení seznamu. Můžete zobrazit informace, jako je počáteční čas, koncový čas a celkový čas asynchronní operace.

Asynchronní nástroj .NET byl zastaven.

Analýza výkonu databáze (.NET Core)

U aplikací .NET Core, které používají ADO.NET nebo Entity Framework Core, nástroj Database umožňuje zaznamenávat databázové dotazy, které vaše aplikace provádí během diagnostické relace. Potom můžete analyzovat informace o jednotlivých dotazech, abyste našli místa, kde je možné zlepšit výkon vaší aplikace. Tento nástroj je k dispozici v profileru výkonu. Otevřete Profiler výkonu výběrem profileru výkonu ladění>(nebo Alt + F2).

Nástroj zobrazí každý dotaz v zobrazení seznamu. Můžete zobrazit informace, jako je čas zahájení dotazu a doba trvání.

Přidělování

Vizualizace čítačů .NET (.NET Core)

Počínaje sadou Visual Studio 2019 verze 16.7 můžete pomocí nástroje Čítače .NET v sadě Visual Studio vizualizovat čítače výkonu. Čítače vytvořené pomocí čítačů dotnet můžete vizualizovat. Čítače dotnet podporují mnoho čítačů, jako je využití procesoru a velikost haldy uvolňování paměti.

Nástroj zobrazí živé hodnoty pro každý čítač v zobrazení seznamu.

Shromažďování nástrojů čítačů .NET

Prozkoumání událostí aplikace

Prohlížeč obecných událostí umožňuje zobrazit aktivitu vaší aplikace prostřednictvím seznamu událostí, jako je načtení modulu, spuštění vlákna a konfigurace systému, které vám pomůžou lépe diagnostikovat, jak vaše aplikace funguje přímo v profileru sady Visual Studio. Tento nástroj je k dispozici v profileru výkonu. Otevřete Profiler výkonu výběrem profileru výkonu ladění>(nebo Alt + F2).

Nástroj zobrazí každou událost v zobrazení seznamu. Sloupce poskytují informace o každé události, například název události, časové razítko a ID procesu.

trasování Prohlížeč událostí

Zobrazení vlastních událostí v grafech časové osy

Můžete programově vytvořit vlastní události, které se v grafech časové osy zobrazují jako ikony, jako jsou grafy využití procesoru a využití paměti. Další informace najdete v tématu Přidání značek uživatelů na časovou osu.

Analýza spotřeby prostředků (XAML)

V aplikacích XAML, jako jsou desktopové aplikace WPF pro Windows a aplikace pro UPW, můžete analyzovat spotřebu prostředků pomocí nástroje Časová osa aplikace. Můžete například analyzovat čas strávený aplikací přípravou rámců uživatelského rozhraní (rozložení a vykreslování), obsluhou požadavků na síť a disk a ve scénářích, jako je spuštění aplikace, načtení stránky a změna velikosti okna. Pokud chcete nástroj použít, zvolte v profileru výkonu časovou osu aplikace a pak zvolte Spustit. Ve vaší aplikaci si projděte scénář s podezřelým problémem se spotřebou prostředků a pak zvolte Zastavit kolekci a vygenerujte sestavu.

Nízké snímkové rychlosti v grafu propustnosti vizuálu můžou odpovídat vizuálním problémům, které vidíte při spuštění aplikace. Podobně můžou vysoká čísla v grafu využití vláken uživatelského rozhraní také odpovídat problémům s odezvou uživatelského rozhraní. V sestavě můžete vybrat časové období s podezřelým problémem s výkonem a pak prozkoumat podrobné aktivity vlákna uživatelského rozhraní v zobrazení podrobností časové osy (dolní podokno).

Nástroj pro profilaci časové osy aplikace

Nástroj pro profilaci časové osy aplikace

V zobrazení podrobností časové osy můžete najít informace, jako je typ aktivity (nebo prvek uživatelského rozhraní), spolu s dobou trvání aktivity. Například na obrázku má událost Rozložení pro ovládací prvek Grid 57,53 ms.

Další informace najdete v tématu Časová osa aplikace.

Prozkoumání výkonu uživatelského rozhraní a událostí přístupnosti (UPW)

V aplikacích pro UPW můžete povolit analýzu uživatelského rozhraní v okně Diagnostické nástroje. Nástroj hledá běžné problémy s výkonem nebo přístupností a zobrazuje je v zobrazení Události při ladění. Popisy událostí obsahují informace, které vám můžou pomoct s řešením problémů.

Zobrazení událostí analýzy uživatelského rozhraní v diagnostických nástrojích

Zobrazení událostí analýzy uživatelského rozhraní v diagnostických nástrojích

Analýza využití GPU (Direct3D)

V aplikacích Direct3D (komponenty Direct3D musí být v jazyce C++), můžete prozkoumat aktivitu na GPU a analyzovat problémy s výkonem. Další informace najdete v tématu Využití GPU. Pokud chcete nástroj použít, zvolte v Profileru výkonu využití GPU a pak zvolte Spustit. V aplikaci si projděte scénář, který vás zajímá o profilaci, a pak zvolte Zastavit kolekci a vygenerujte sestavu.

Když vyberete časové období v grafech a zvolíte zobrazit podrobnosti, zobrazí se v dolním podokně podrobné zobrazení. V podrobném zobrazení můžete prozkoumat, kolik aktivit se děje na jednotlivých procesorech a GPU. Výběrem událostí v nejnižším podokně získáte automaticky otevírané okno na časové ose. Vyberte například událost Prezentovat a zobrazte automaticky otevírané okno prezentovat volání. (Světle šedé svislé čáry VSync lze použít jako odkaz, abyste pochopili, jestli je určitá.Prezentovat zmeškaná volání VSync Aby aplikace trvale dosáhla 60 FPS, musí existovat jedno současné volání mezi každou dvěma VSyncs.)

Nástroj pro profilaci využití GPU

Nástroj pro profilaci využití GPU

Pomocí grafů můžete také určit, jestli jsou kritické body výkonu vázané na procesor nebo GPU.

Analýza výkonu (starší verze nástrojů)

V sadě Visual Studio 2019 se starší verze Průzkumníka výkonu a související nástroje pro profilaci, jako je Průvodce výkonem, složily do profileru výkonu, který můžete otevřít pomocí profileru výkonu ladění>. V profileru výkonu závisí dostupné diagnostické nástroje na zvoleném cíli a aktuálním otevřeném spouštěcím projektu. Nástroj Využití procesoru poskytuje funkci vzorkování, která byla dříve podporována v Průvodci výkonem. Nástroj Instrumentace poskytuje instrumentovanou funkci profilace (pro přesné počty volání a doby trvání), která byla v Průvodci výkonem. V profileru výkonu se zobrazí také další nástroje pro paměť.

Nástroj Performance Explorer