První seznámení s nástroji pro profilaci
Visual Studio poskytuje celou řadu nástrojů pro profilaci, které vám pomůžou diagnostikovat různé druhy problémů s výkonem v závislosti na typu vaší aplikace. V tomto článku se rychle podíváme na nejběžnější nástroje pro profilaci.
Informace o podpoře nástrojů pro profilaci pro různé typy aplikací najdete v tématu Který nástroj mám použít?
Měření výkonu při ladění
Nástroje pro profilaci, ke které máte přístup během ladicí relace, jsou k dispozici v Diagnostické nástroje okně. Okno Diagnostické nástroje se zobrazí automaticky (pokud jste ho nevypnuli). Okno zobrazíte kliknutím na Ladit / Windows / Zobrazit Diagnostické nástroje (nebo stiskněte Ctrl + Alt + F2). Když je okno otevřené, můžete vybrat nástroje, pro které chcete shromažďovat data.

Během 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.

Okno Diagnostické nástroje běžným způsobem profilování aplikací, ale u sestavení pro vydání můžete také provést postaplikační analýzu aplikace. Další informace o různých přístupech najdete v tématu Spouštění nástrojů pro profilaci s ladicím programem nebo bez něj. Informace o podpoře nástrojů pro profilaci pro různé typy aplikací najdete v tématu Který nástroj mám použít?
Mezi nástroje dostupné v Diagnostické nástroje okně nebo během relace ladění patří:
Poznámka
Windows 8 a novější se vyžaduje ke spuštění nástrojů pro profilaci s ladicím programem (Diagnostické nástroje okno). S verzí 7 a novějšími můžete Windows nástroje.
Měření výkonu v sestaveních pro vydání
Nástroje v Profiler výkonu jsou určené k poskytování analýzy sestavení pro vydání. V Profiler výkonu můžete shromažďovat diagnostické informace, zatímco je aplikace spuštěná, a pak shromážděné informace prozkoumat po zastavení aplikace (posouvá analýza).
Otevřete okno Profiler výkonu výběrem možnosti Ladit > Profiler výkonu (nebo Alt + F2).

Další informace o použití nástroje využití procesoru nebo paměti v nástroji Profiler výkonu vs. nástroje integrované s ladicím programem najdete v tématu Spouštění nástrojů pro profilacis ladicím programem nebo bez něj.
Mezi nástroje dostupné v Profiler výkonu patří:
- Využití procesoru
- Přidělování objektů .NET
- Využití paměti
- Asynchronní nástroj .NET
- Databázový nástroj
- Využití GPU
Informace o podpoře nástrojů pro profilaci pro různé typy aplikací najdete v tématu Který nástroj mám použít?
V některých scénářích vám 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 analýze. K povolení scénářů zahrnujících více nástrojů pro profilaci můžete použít také profiler příkazového řádku.
Prozkoumání výkonu s využitím popisů výkonu
Nejjednodušší způsob, jak zobrazit informace o výkonu, je často použít perfTips. 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ěřená od doby posledního pozastavení ladicího programu nebo při spuštění aplikace). Pokud například procházíte kód (F10, F11), zobrazí se v nástroji PerfTips doba běhu aplikace z operace předchozího kroku do aktuálního kroku.

Pomocí popisů perftips můžete zjistit, jak dlouho trvá provedení bloku kódu nebo jak dlouho trvá dokončení jedné funkce.
Popisky perfTips zobrazují stejné události, které se zobrazují také v zobrazení Události Diagnostické nástroje. 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.

Poznámka
Pokud jste Visual Studio Enterprise, můžete na této kartě zobrazit také události IntelliTrace.
Analýza využití procesoru
Nástroj Využití procesoru je dobrým místem, kde můžete začít analyzovat výkon vaší aplikace. Zobrazí se další informace o náccích procesoru, které vaše aplikace spotřebovává. Můžete použít nástroj využití procesoru integrovaný s ladicím programem nebo nástroj pro využití procesoru s posouvem.
Při použití nástroje využití procesoru integrovaného s ladicím programem otevřete okno Diagnostické nástroje (pokud je zavřené, zvolte Ladit / Windows / Zobrazit Diagnostické nástroje). Během ladění otevřete zobrazení Souhrn a vyberte Zaznamenat profil procesoru.

Jedním ze způsobů, jak tento nástroj použít, je nastavit dvě zarážky v kódu, jednu na začátku a jednu na konci funkce nebo oblast kódu, kterou chcete analyzovat. Zkontrolujte data profilace, když jste pozastaveni na druhé zarážce.
V zobrazení Využití procesoru se zobrazí seznam funkcí seřazených podle nejdelšího běhu s nejdelší spuštěnou funkcí v horní části. To vám může pomoct s funkcemi, u kterých dochází k kritickým místům výkonu.

Poklikejte na funkci, která vás zajímá, a uvidíte podrobnější třísokenové zobrazení s vybranou funkcí uprostřed okna, volající funkcí vlevo a funkcemi na pravé straně. Čá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.

Analýza využití paměti
Okno Diagnostické nástroje také umožňuje vyhodnotit využití paměti ve vaší aplikaci pomocí nástroje Využití paměti. Můžete se například podívat na počet a velikost objektů na haldě. Můžete použít nástroj využití paměti integrovaný s ladicím programem nebo nástroj pro post-sému využití paměti v Profiler výkonu.
Vývojáři .NET si mohou 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 vzory 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ěží pouze jako postnámední nástroj. 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 při kontrole paměti potřebujete používat funkce ladicího programu, například krokování kódu, doporučuje se nástroj využití paměti integrovaný do ladicího programu.
Pokud chcete analyzovat využití paměti pomocí nástroje Využití paměti, musíte pořizovat alespoň jeden snímek paměti. Nejlepším způsobem, jak analyzovat paměť, je často pořízení dvou snímků. první přímo před podezřelým problémem s pamětí a druhý snímek hned po podezřelém problému s pamětí. Pak můžete zobrazit rozdíl obou 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ím programem.

Když vyberete jednu z odkazů se šipkami, zobrazí se rozdílové
zobrazení haldy (červená šipka nahoru Zvýšení využití paměti zobrazuje rostoucí počet objektů (vlevo) nebo zvětšející se velikost haldy (vpravo).) Pokud kliknete na pravé propojení, zobrazí se rozdílové zobrazení haldy seřazené podle objektů, které zvětšují 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 počet bajtů používaných objekty ve druhém snímku zvýšil o ClassHandlersStore 3 492 bajtů.

Pokud kliknete na odkaz vlevo místo 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 čísel, se zobrazují v horní části (seřazené podle sloupce Count Diff).
Analýza spotřeby prostředků (XAML)
V aplikacích XAML, jako Windows desktopové aplikace WPF a aplikace pro UPW, můžete analyzovat spotřebu prostředků pomocí Časová osa aplikace nástroje. Můžete například analyzovat čas strávený přípravou snímků uživatelského rozhraní (rozložení a vykreslování), údržbou síťových a diskových požadavků a ve scénářích, jako je spuštění aplikace, načtení stránky a změna velikosti okna. Pokud chcete tento nástroj použít, Časová osa aplikace na Profiler výkonu a pak zvolte Spustit. V aplikaci si prohlédněte scénář s podezřelým problémem se spotřebou prostředků a pak zvolte Zastavit shromažďování a vygenerování sestavy.
Nízké snímkové rychlosti v grafu propustnosti vizuálu mohou odpovídat vizuálním problémům, které se zobrazí při spuštění aplikace. Podobně vysoká čísla v grafu využití vlákna uživatelského rozhraní mohou 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).

V zobrazení podrobnosti č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 trvá událost rozložení ovládacího prvku Grid 57,53 ms.
Další informace najdete v tématu Časová osa aplikace.
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 zatížení modulu, spuštění vlákna a konfigurace systému, a pomáhá tak lépe diagnostikovat výkon aplikace přímo v Visual Studio profileru. Tento nástroj je k dispozici v Profiler výkonu. Otevřete okno Profiler výkonu výběrem možnosti Ladit > Profiler výkonu (nebo Alt + F2).
Nástroj zobrazí každou událost v zobrazení seznamu. Sloupce poskytují informace o jednotlivých událostech, jako je název události, časové razítko a ID procesu.

Analýza asynchronního kódu (.NET)
Nástroj .NET Async umožňuje analyzovat výkon asynchronního kódu ve vaší aplikaci. Tento nástroj je k dispozici v Profiler výkonu. Otevřete okno Profiler výkonu výběrem možnosti Ladit > Profiler výkonu (nebo Alt + F2).
Nástroj zobrazí každou asynchronní operaci v zobrazení seznamu. Můžete si zobrazit informace, jako je čas spuštění, čas ukončení a celková doba asynchronní operace.

Analýza výkonu databáze (.NET Core)
U aplikací .NET Core, které používají ADO.NET nebo Entity Framework Core, vám databázový nástroj umožňuje zaznamenávat databázové dotazy, které vaše aplikace provádí během relace diagnostiky. Pak můžete analyzovat informace o jednotlivých dotazech, abyste našli místa, kde lze zlepšit výkon aplikace. Tento nástroj je k dispozici v Profiler výkonu. Otevřete okno Profiler výkonu výběrem možnosti Ladit > Profiler výkonu (nebo Alt + F2).
Nástroj zobrazí každý dotaz v zobrazení seznamu. Můžete si zobrazit informace, jako je čas a doba trvání spuštění dotazu.

Vizualizace čítačů .NET (.NET Core)
Od verze Visual Studio 2019 verze 16.7 můžete čítače .NET použít v nástroji Visual Studio k vizualizaci čítačů výkonu. Čítače vytvořené pomocí čítačů dotnet můžete vizualizovat. Čítače dotnet podporují mnoho čítačů, například využití procesoru a velikost haldy systému uvolňování paměti.
Nástroj zobrazuje živé hodnoty pro každý čítač v zobrazení seznamu.
Prozkoumání událostí výkonu a přístupnosti uživatelského rozhraní (UPW)
V aplikacích pro UPW můžete povolit analýzu uživatelského rozhraní v Diagnostické nástroje okně. Nástroj vyhledá běžné problémy s výkonem nebo přístupností a během ladění je zobrazí v zobrazení Události. Popisy událostí poskytují informace, které vám můžou pomoct při řešení problémů.

Analýza využití GPU (Direct3D)
V aplikacích Direct3D (komponenty Direct3D musí být v jazyce C++) můžete prozkoumat aktivitu GPU a analyzovat problémy s výkonem. Další informace najdete v tématu Využití GPU. Pokud chcete tento nástroj použít, zvolte využití GPU v Profiler výkonu a pak zvolte Spustit. V aplikaci si prohlédněte scénář, který vás zajímá profilace, a pak zvolte Zastavit shromažďování a vygenerování sestavy.
Když v grafech vyberete časové období a zvolíte zobrazit podrobnosti, zobrazí se v dolním podokně podrobné zobrazení. V podrobném zobrazení můžete zjistit, k jaké aktivitě dochází na jednotlivých procesorech a GPU. Výběrem událostí v nejnižším podokně zobrazíte automaticky otevíraná okna na časové ose. Například výběrem události Present (Prezentovat) zobrazíte automaticky otevíraná okna Present call (Prezentovat volání). (Světle šedé svislé čáry VSync je možné použít jako referenci, abyste pochopili, jestli určitá volání Present vynechanou VSync. Aby aplikace plynule dosála 60 FPS, musí mezi jednotlivými virtuálními synchronizacemi být jedno volání Present.)

Pomocí grafů můžete také určit, jestli existují kritické body výkonu vázané na procesor nebo GPU.
Analýza výkonu (UpW v JavaScriptu)
U aplikací pro UPW můžete použít nástroj JavaScript Memory a nástroj HTML UI Responsiveness( Rychlost odezvy uživatelského rozhraní HTML).
Nástroj JavaScript Memory je podobný nástroji Využití paměti, který je k dispozici pro jiné typy aplikací. Pomocí tohoto nástroje můžete porozumět využití paměti a najít nevrácenou paměť ve vaší aplikaci. Další podrobnosti o nástroji najdete v tématu JavaScript Memory.

K diagnostice odezvy uživatelského rozhraní, pomalého načítání a pomalých aktualizací vizuálů v aplikacích pro UPW použijte nástroj PRO odezvu uživatelského rozhraní HTML. Použití je podobné Časová osa aplikace pro jiné typy aplikací. Další informace najdete v tématu Rychlost odezvy uživatelského rozhraní HTML.

Analýza využití sítě (UPW)
V aplikacích pro UPW můžete analyzovat síťové operace prováděné pomocí rozhraní Windows.Web.Http API. Tento nástroj vám může pomoct vyřešit problémy, jako jsou problémy s přístupem a ověřováním, nesprávné použití mezipaměti nebo nízký výkon zobrazení a stahování. Pokud chcete tento nástroj použít, v Profiler výkonu vyberte Síť a pak zvolte Spustit. V aplikaci si projdete scénář, který používá , a Windows.Web.Http pak zvolte Zastavit shromažďování, abyste vygeneroval sestavu.

Výběrem operace v souhrnném zobrazení zobrazíte další podrobnosti.

Další informace najdete v tématu Využití sítě.
Analýza výkonu (starší verze nástrojů)
Pokud potřebujete funkce, jako je instrumentace, které v současné době nejsou k dispozici v nástrojích využití procesoru nebo paměti, a používáte desktopové nebo ASP.NET aplikace, můžete použít Prohlížeč výkonu pro profilaci. (Nepodporuje se v aplikacích pro UPW). Další informace najdete v tématu Prohlížeč výkonu.
V Visual Studio 2019 byly starší verze Prohlížeč výkonu a související nástroje pro profilaci, jako je Průvodce výkonem, sbalené do Profiler výkonu, který můžete otevřít pomocí nástroje Ladění > Profiler výkonu. V Profiler výkonu nástroje diagnostiky závisejí na zvoleném cíli a aktuálním otevřeném projektu po spuštění. Nástroj Využití PROCESORU poskytuje možnost vzorkování, která se dříve podporovala v Průvodci výkonem. Nástroj instrumentace poskytuje instrumentované funkce profilace (pro přesné počty volání a doby trvání), které byly v Průvodci výkonem. Další paměťové nástroje se také zobrazí v Profiler výkonu.

Který nástroj mám použít?
Tady je tabulka, která uvádí různé nástroje, Visual Studio nabízí, a různé typy projektů, které můžete použít s:
| Nástroj pro výkon | Plocha Windows | UWP | ASP.NET/ASP.NET Core |
|---|---|---|---|
| Tipy pro výkon | ano | ano | ano |
| Využití procesoru | ano | ano | ano |
| Využití paměti | ano | ano | ano |
| Přidělování objektů .NET | ano (pouze .NET) | ano | ano |
| Využití GPU | ano | ano | ne |
| Časová osa aplikace | Ano (XAML) | ano | ne |
| Prohlížeč událostí | ano | ano | ano |
| .NET Async | Ano (jenom .NET) | ano | ano |
| Čítače .NET | Ano (jenom .NET Core) | ne | ano (jenom ASP.NET Core) |
| Databáze | Ano (jenom .NET Core) | ne | ano (jenom ASP.NET Core) |
| Prohlížeč výkonu | ne | ne | ne |
| IntelliTrace | .net jenom s Visual Studio Enterprise | .net jenom s Visual Studio Enterprise | .net jenom s Visual Studio Enterprise |
| Nástroj Performance Tool | Plocha Windows | UWP | ASP.NET/ASP.NET Core |
|---|---|---|---|
| Využití CPU | ano | ano | ano |
| Využití paměti | ano | ano | ano |
| Využití GPU | ano | ano | ne |
| Časová osa aplikace | Ano (XAML) | ano | ne |
| Tipy pro výkon | ano | Ano pro XAML, ne pro HTML | ano |
| Prohlížeč výkonu | ano | ne | ano |
| IntelliTrace | .net jenom s Visual Studio Enterprise | .net jenom s Visual Studio Enterprise | .net jenom s Visual Studio Enterprise |
| Využití sítě | ne | ano | ne |
| Rychlost odezvy uživatelského rozhraní (HTML) | ne | Ano pro HTML, ne pro XAML | ne |
| Paměť JavaScriptu | ne | Ano pro HTML, ne pro XAML | ne |