Instrumenteer uw .NET-toepassing in Visual Studio (C#, C++, Visual Basic, F#)
Met de release van Visual Studio 2022 versie 17.5 kunt u het nieuwe hulpprogramma voor dynamische instrumentatie gebruiken. Dit hulpprogramma toont het exacte aantal keren dat uw functies worden aangeroepen en is sneller dan de vorige versie van het hulpprogramma Instrumentatie. Dit hulpprogramma biedt ondersteuning voor .NET Core-instrumentatie zonder DAT U PDBs nodig hebt. Vanaf Visual Studio 2022 versie 17.6 Preview 2 ondersteunt het hulpprogramma ook C/C++.
Het hulpprogramma is vergelijkbaar met het CPU-gebruikshulpprogramma, behalve dat het is gebaseerd op muurkloktijd in plaats van CPU-gebruik. Dit betekent dat geblokkeerde tijd, zoals de tijd die wordt besteed aan het wachten op vergrendelingen, wordt weergegeven in de instrumentatietracering, in tegenstelling tot het hulpprogramma CPU-gebruik. Zie Instrumentatieoverzicht en casestudy: Een prestatieprobleem isolerenvoor meer informatie over het effectief gebruik van het instrumentatiehulpprogramma.
Uw toepassing instrumenteer
Selecteer Alt+F2 (of Foutopsporing > Performance Profiler) om de performance profiler in Visual Studio te openen.
Vink het selectievakje voor Instrumentatie aan.
Als u de optie Beginnen met pauzeren van verzameling inschakelt voordat u de profiler start, worden de gegevens pas verzameld wanneer u de knop Record selecteert in de diagnostische sessieweergave.
Notitie
Als het hulpprogramma niet beschikbaar is voor selectie, schakelt u het selectievakje van elk ander hulpprogramma uit omdat sommige hulpprogramma's alleen moeten worden uitgevoerd. Zie Meerdere profilerhulpprogramma's tegelijkertijd gebruikenvoor meer informatie over het gezamenlijk gebruiken van hulpprogramma's.
Als het hulpprogramma nog steeds niet beschikbaar is, controleert u of uw project voldoet aan de voorgaande vereisten. Zorg ervoor dat uw project zich in de releasemodus bevindt om de meest nauwkeurige gegevens vast te leggen.
Selecteer de knop Start om het hulpprogramma uit te voeren.
Selecteer de items in uw programma die u wilt instrumenteren.
Vanaf Visual Studio 2022 versie 17.11 blijft de profiler de geselecteerde items behouden voor de volgende profileringsuitvoering.
Vanaf Visual Studio 2022 versie 17.13 Preview 1 kunt u items selecteren die u wilt instrumenteren voor C++.
Selecteer OK-.
Nadat het hulpprogramma is gestart, doorloopt u het scenario dat u in uw app wilt profilen. Selecteer vervolgens Het stoppen van de verzameling of sluit de app om uw gegevens te bekijken.
Het instrumentatierapport analyseren
Uw profileringsgegevens worden weergegeven in Visual Studio.
In de weergave Instrumentatiegegevens ziet u een lijst met functies die langst worden uitgevoerd, met de langstlopende functie bovenaan onder TopFuncties. In de sectie Hot Path ziet u de call stack voor de functies die de meeste tijd in beslag nemen. Deze lijsten kunnen u helpen bij functies waar prestatieknelpunten optreden.
Klik op een functie waarin u geïnteresseerd bent en u ziet een gedetailleerdere weergave.
De beschikbare gegevens zijn vergelijkbaar met het hulpprogramma CPU-gebruik, behalve dat deze is gebaseerd op werkelijke tijd en aantal oproepen in plaats van op CPU-gebruik.
Inzichten analyseren
Als er inzichten worden weergegeven in de sectie Top Insights, gebruikt u de opgegeven koppeling voor meer informatie over het geïdentificeerde probleem. Voor meer informatie, zie CPU-inzichten, maar houd er rekening mee dat de informatie voor het instrumentatiehulpmiddel specifiek is voor kloktijd en niet voor CPU-gebruik.
Als u Copilot gebruikt, gebruikt u bovendien de knop Ask Copilot om het Copilot-chatvenster te openen. Copilot geeft suggesties op basis van een onderzoek van uw code en eventuele geïdentificeerde problemen.
Gedetailleerde rapporten voor instrumentatie analyseren
Als u het instrumentatierapport wilt analyseren, klikt u op Details openenof klikt u op een van de belangrijkste functies om de weergave Functions te openen.
Het rapport biedt verschillende weergaven van de diagnostische gegevens:
Bekijk | Beschrijving |
---|---|
Beller/gebeld | Gedetailleerde weergave van de tijd die is besteed aan een specifieke functie, de functie(s) die deze aanroept en de functie(s) die worden aangeroepen. De prestatiegegevens worden geaggregeerd voor de gegevensverzamelingsperiode. U kunt aanroepende functies en aangeroepen functies selecteren om het oproeppad te doorlopen. |
Oproepstructuur | Hiërarchische weergave van het functieaanroeppad. Wordt gebruikt om oproeppaden te identificeren die het meest tijd in beslag nemen (dynamisch pad). |
Modules | Weergave van de tijd die in afzonderlijke modules is besteed, geaggregeerd over de periode van gegevensverzameling. Wordt gebruikt om modules te identificeren die prestatieknelpunten kunnen zijn vanwege een combinatie van hoog aantal aanroepen en/of prestatieproblemen. |
Functies | Weergave van de tijd die is besteed aan afzonderlijke functies, geaggregeerd over de periode van gegevensverzameling. Wordt gebruikt om functies te identificeren die prestatieknelpunten kunnen zijn vanwege een combinatie van hoog aantal aanroepen en/of prestatieproblemen. |
Vlamgrafiek | Hiërarchische weergave van het functieaanroeppad in een visualisatie van een vlamgrafiek. Wordt gebruikt om oproeppaden te identificeren die het meest tijd in beslag nemen (dynamisch pad). |
In alle weergaven, met uitzondering van beller/gebelde, wordt het diagnostische rapport gesorteerd op Totaal [eenheid, %], van hoog naar laag. Wijzig de sorteervolgorde of sorteerkolom door de koppen van de sorteerkolommen te selecteren. U kunt dubbelklikken op een functie waarin u geïnteresseerd bent, en u ziet de bron voor de functie en het markeren van de plaats waar de tijd in die functie wordt besteed. De tabel bevat kolommen met gegevens, zoals de tijd die in de functie is besteed, inclusief aangeroepen functies (Totaal) en een tweede kolom met de tijd die in een functie is besteed, met uitzondering van aangeroepen functies (Self).
Met deze gegevens kunt u beoordelen of de functie zelf een prestatieknelpunt is. Bepaal hoeveel gegevens de methode weergeeft om te zien of code- of runtimebibliotheken van derden de reden zijn waarom uw eindpunten traag of intensief resourceverbruik hebben.
Zie Dynamische paden identificeren met Flame Graphvoor meer informatie over het gebruik van de Vlamgrafiek.
Instrumentatie-aanroepstructuur
Als u de oproepstructuur wilt weergeven, selecteert u het bovenliggende knooppunt in het rapport. Standaard wordt de pagina Instrumentatie geopend in de weergave Beller/Callee. Selecteer in de vervolgkeuzelijst Huidige weergaveOproepstructuur. De oproepstructuurweergave kan u helpen snel prestatieknelpunten te identificeren.
U kunt klikken op de Hot Path uitvouwen en Hot Path weergeven knoppen om de functieaanroepen te zien die de meeste wandkloktijd gebruiken in de weergave oproepstructuur.
Hier vindt u meer informatie over de kolomwaarden:
Totaal geeft aan hoeveel tijd er is besteed aan de functie en eventuele functies die door de functie zijn aangeroepen. Hoog Totaal waarden verwijzen naar de functies die de meeste kloktijd verbruiken.
Zelf geeft aan hoeveel tijd in het functielichaam is besteed, exclusief de tijd die is besteed aan andere functies die door de functie zijn aangeroepen. Hoge waarden voor Zelf- kunnen wijzen op een prestatieknelpunt in de functie.
Aantal aanroepen geeft het aantal keren aan dat een functie wordt aangeroepen.
Module de naam van de module die de functie bevat.
Asynchrone aanroepen in de instrumentatie-aanroepstructuur (.NET)
Vanaf Visual Studio 2022 versie 17.13 Preview 2 geven de weergaven die een visuele call tree vormen, .NET asynchrone aanroepen weer onder de functies waar de asynchrone aanroep is gedaan, zodat het makkelijker is om de uitvoeringsvolgorde binnen één uniforme stacktracering te volgen. Dit kan u helpen snel prestatieknelpunten te identificeren.
De geïntegreerde stacktracering wordt weergegeven in de aanroepstructuur weergave en het hot path sectie van de pagina Samenvatting. Asynchrone knooppunten worden weergegeven met de [Async-aanroep] descriptor.
U kunt de weergave van een gestikte asynchrone aanroepstack in-/uitschakelen door Stitch Async Stacks te selecteren in de optie Filter in de overzichtsweergave van de profiler. De instelling is standaard ingeschakeld.