Měření výkonu aplikace analýzou využití procesoru
Při ladění vyhledejte problémy s výkonem pomocí diagnostického nástroje využití procesoru integrovaného v ladicím programu. Můžete také analyzovat využití procesoru bez připojeného ladicího programu nebo cílením na spuštěnou aplikaci. Další informace najdete v tématu Spuštění nástrojů pro profilaci s ladicím programem nebo bez něj.
Když se ladicí program pozastaví, nástroj Využití procesoru v okně Diagnostické nástroje shromáždí informace o funkcích, které jsou spuštěny ve vaší aplikaci. Nástroj zobrazí seznam funkcí, které pracovaly, a nabídce graf s časovou osou, který můžete použít k podrobnému řešení konkrétních úseků vzorkovací relace.
Důležité
Diagnostické nástroje integrované s ladicím programem jsou podporovány pro vývoj .NET v Visual Studio, včetně ASP.NET, ASP.NET Core a pro vývoj nativních aplikací nebo jazyka C++. Vyžaduje se Visual Studio zatížení. Windows 8 a novější se vyžaduje ke spuštění nástrojů pro profilaci pomocí ladicího programu (Diagnostické nástroje okno).
V tomto kurzu:
- Shromažďovat data o využití procesoru
- Analyzovat data o využití procesoru
Pokud vám využití procesoru neposkytuje data, která potřebujete, další nástroje pro profilaci v Profiler výkonu poskytují různé druhy informací, které vám můžou být užitečné. V řadě případů může být kritickým bodem aplikace něco jiného než procesor, třeba paměť, vykreslování uživatelského rozhraní nebo dlouhá odezva síťového požadavku.
1. krok: Shromáždění profilačních dat
Otevřete projekt, který chcete v sadě Visual Studio ladit, a nastavte v aplikaci zarážku do bodu, kde chcete prověřit využití procesoru.
Druhou zarážku nastavte na konec funkce nebo oblasti kódu, kterou chcete analyzovat.
Nastavením dvou zarážek omezíte shromažďování dat jenom na analyzovanou část kódu.
Okno Diagnostické nástroje se zobrazí automaticky (pokud jste ho nevypnuli). Pokud chcete okno znovu zobrazit, klikněte na > Ladit Windows > Zobrazit Diagnostické nástroje.
Na panelu nástrojů v nastavení Vybrat nástroje můžete vybrat, jestli chcete zobrazit Využití procesoru, Využití paměti nebo obojí. Pokud používáte nástroj Visual Studio Enterprise, můžete intelliTrace také povolit nebo zakázat v části Nástroje > Možnosti > IntelliTrace.

Zaměříme se hlavně na využití procesoru. Zkontrolujte, že je zapnuté Využití procesoru (je zapnuté automaticky).
Klikněte na Ladit a spustit ladění > (nebo spustit na panelu nástrojů nebo F5).
Jakmile se aplikace načte, zobrazí se souhrnný přehled diagnostických nástrojů. Pokud potřebujete okno otevřít, klikněte na Ladit a > Windows > Zobrazit Diagnostické nástroje.

Další informace o událostech najdete v tématu Vyhledávání a filtrování na kartě Události v Diagnostické nástroje okně.
Spusťte scénář, který se zastaví u první zarážky.
Jakmile se ladicí program pozastaví, zapněte shromažďování dat o využití procesoru a pak otevřete kartu Využití procesoru.

Když zvolíte Zaznamenat profil CPU, Visual Studio začne nahrávat funkce a zjistí dobu potřebnou k jejich provedení. Shromážděná data můžete zobrazit, jen když se aplikace zastaví na zarážce.
Stiskněte klávesu F5, kterou spustíte aplikaci až ke druhé zarážce.
Teď máte údaje o výkonu aplikace přesně pro oblast kódu spuštěnou mezi dvěma zarážkami.
Profiler začne připravovat údaje o vlákně. Počkejte, až skončí.

V nástroji Využití procesoru se na kartě Využití procesoru zobrazí sestava.

Pokud chcete vybrat konkrétnější oblast kódu, která se má analyzovat, vyberte oblast na časové ose procesoru (musí to být oblast, která zobrazuje data profilace).

Teď můžete začít analyzovat data.
Tip
Při pokusu o identifikaci problémů s výkonem udělejte několik měření. Výkon se přirozeně liší od spuštění ke spuštění a cesty ke kódu se obvykle spouští pomaleji při jejich prvním spuštění kvůli práci při jedné inicializaci, jako je načítání knihoven DLL, kompilování metod JIT a inicializace mezipamětí. Provedením více měření získáte lepší představu o rozsahu a mediánu zobrazené metriky, což vám umožní porovnat první čas s výkonem stabilního stavu oblasti kódu.
2. krok: Analýza dat o využití procesoru
Analýzu dat doporučujeme začít tím, že zkontrolujete seznam funkcí na kartě Využití procesoru. Zjistěte nejaktivnější funkce a pak se na každou z nich podívejte podrobněji.
V seznamu funkcí se podívejte, jaké funkce vykonávají většinu práce.

Tip
Funkce jsou seřazené od nejvíce pracujících po nejméně pracující (nejsou seřazené podle pořadí, v jakém byly volány). Pomůže vám to rychle identifikovat funkce, které běží nejdéle.
V seznamu funkcí poklikejte na některou funkci aplikace, která pracuje nejvíce.
Když na ni poklikáte, otevře se v levém podokně zobrazení Volající/volaný.

V tomto zobrazení se vybraná funkce zobrazí v záhlaví i v poli Aktuální funkce (v tomto příkladu je to GetNumber). Funkce, která volala aktuální funkci, se zobrazí vlevo v části Volání funkcí a všechny funkce volané aktuální funkcí se zobrazí v poli Volaný funkce vpravo. (Pokud chcete aktuální funkci změnit, vyberte libovolné pole.)
V tomto zobrazení vidíte celkový čas (ms) a procento z celkové doby spuštění aplikace, kterou funkce potřebovala k dokončení. Tělo funkce také zobrazuje celkovou dobu (a procento času) spotřebovanou tělem funkce, ale bez doby spotřebované volajícími a volanými funkcemi. (V tomto příkladu bylo 2367 z 2389 ms stráveno v těle funkce a zbývajících 22 ms bylo stráveno v externím kódu s názvem touto funkcí).
Tip
Vysoké hodnoty v těle funkce pravděpodobně znamenají kritické místo výkonu samotné funkce.
Pokud chcete zobrazit zobrazení vyšší úrovně zobrazující pořadí, ve kterém jsou funkce volány, vyberte v rozevíracím seznamu v horní části podokna možnost Call Tree (Strom volání).
Každé číslo na následujícím obrázku odpovídá některému kroku v postupu.


Image Description 
Nejvyšší uzel ve stromech volání Využití procesoru je fiktivní. 
Ve většině aplikací, ve kterých zakážete možnost Zobrazit externí kód, je v druhé úrovni uzel [Externí kód], který obsahuje systémový kód a kód architektury, který spouští a zastavuje aplikaci, vykresluje uživatelské rozhraní, řídí plánování podprocesů a na nejnižší úrovni zajišťuje pro aplikaci další služby. 
Uzlu druhé úrovně jsou podřízeny metody uživatelského kódu a asynchronní rutiny, které volá nebo vytváří systémový kód a kód architektury druhé úrovně. 
Podřízené uzly metody obsahují jenom data pro volání nadřízené metody. Pokud zakážete Zobrazit externí kód, mohou metody aplikace obsahovat také uzel [Externí kód]. Další informace k hodnotám ve sloupcích:
Celkový čas procesoru: Kolik práce vykonala funkce spolu se všemi dalšími funkcemi, které volala. Vysoké hodnoty znamenají, že tyto funkce patří k těm nejnáročnějším.
Vlastní čas procesoru: Kolik práce vykonal kód v těle funkce po odečtení práce vykonané volanými funkcemi. Vysoké hodnoty vlastního času procesoru pravděpodobně odpovídají kritickému místu ve funkci.
Moduly: Název modulu, který funkci obsahuje, nebo počet modulů obsahujících funkce v uzlu [Externí kód].
Pokud chcete zobrazit volání funkce, která ve stromovém zobrazení volání používají nejvyšší procento cpu, klikněte na Rozbalit horkou cestu.

Poznámka
Pokud se ve stromu volání zobrazí kód označený jako "poškozený" kód nebo "nenáročný zásobník", znamená to, že trasování událostí pro události Windows (ETW) se pravděpodobně zahodí. Zkuste problém vyřešit tak, že podruhé shromáždíte stejné trasování.
Zobrazení externího kódu
Externím kódem se rozumí funkce systémových komponent a komponent architektury, které jsou spouštěné vámi napsaným kódem. Externí kód zahrnuje funkce, které spouštějí a zastavují aplikaci, vykreslují uživatelské rozhraní, řídí dělení na podprocesy a na nejnižší úrovni zajišťuje pro aplikaci další služby. Externí kód vás většinou nebude zajímat, a proto nástroj Využití procesoru shromažďuje externí funkce metody uživatele do jednoho uzlu [Externí kód].
Pokud se chcete podívat na cesty volání externího kódu, vyberte v seznamu filtru zobrazení možnost Zobrazit externí kód a pak zvolte Použít.

Myslete na to, že řetězy volání externího kódu je většinou hluboko vnořené, takže šířka sloupce Název funkce může na většině počítačových monitorů – s výjimkou těch největších – přesáhnout šířku zobrazení. V takovém případě se názvy funkcí zobrazují jako [...].
K nalezení hledaného uzlu použijte vyhledávací pole a pak použijte k zobrazení dat vodorovný posuvník.
Tip
Pokud profilujete externí kód, který Windows funkcí, měli byste se ujistit, že máte nejaktuálenější . soubory pdb. Bez těchto souborů se v zobrazeních sestav zobrazí seznam funkcí Windows, jejichž názvy jsou nesrozumitelné a obtížně pochopitelné. Další informace o tom, jak se ujistit, že máte soubory, které potřebujete, najdete v tématu určení symbolu (. pdb) a zdrojových souborů v ladicím programu.
Další kroky
V tomto kurzu jste se naučili shromažďovat data o využití procesoru a analyzovat je. Pokud jste už dokončili první pohled na nástroje pro profilaci, možná budete chtít rychle zobrazit, jak analyzovat využití paměti ve vašich aplikacích.