Instrumentera .NET-programmet i Visual Studio (C#, C++, Visual Basic, F#)
Med versionen av Visual Studio 2022 version 17.5 kan du använda det nya dynamiska instrumenteringsverktyget. Det här verktyget visar det exakta antalet gånger som dina funktioner anropas och är snabbare än den tidigare versionen av instrumenteringsverktyget. Det här verktyget stöder .NET Core-instrumentation utan att behöva PDF-filer. Från och med Visual Studio 2022 version 17.6 Förhandsversion 2 stöder verktyget även C/C++.
Verktyget liknar CPU-användningsverktyget, förutom att det baserar sig på väggtid istället för CPU-användning. Det innebär att blockerad tid, till exempel tid som spenderas på att vänta på lås, visas i instrumenteringsspåret, till skillnad från CPU-användningsverktyget. Mer information om hur man effektivt kan använda instrumenteringsverktyget finns i Instrumentöversikt och Fallstudie: Isolera ett prestandaproblem.
Instrumentera ditt program
Välj Alt+F2 (eller Felsöka > Performance Profiler) för att öppna prestandaprofileraren i Visual Studio.
Markera kryssrutan Instrumentation.
Om du aktiverar alternativet Starta med en pausad samling innan profileraren startas samlas inte data in förrän du väljer knappen Record i diagnostiksessionsvyn.
Not
Om verktyget inte är tillgängligt för markering avmarkerar du kryssrutan för alla andra verktyg eftersom vissa verktyg måste köras ensamma. Mer information om hur du kör verktyg tillsammans finns i Använda flera profileringsverktyg samtidigt.
Om verktyget fortfarande inte är tillgängligt kontrollerar du att projektet uppfyller ovanstående krav. Kontrollera att projektet är i versionsläge för att samla in de mest exakta data.
Välj knappen Starta för att köra verktyget.
Välj de objekt i programmet som ska instrumenteras.
Från och med Visual Studio 2022 version 17.11 bevarar profileraren de markerade objekten för nästa profileringskörning.
Från och med Visual Studio 2022 version 17.13 Förhandsversion 1 kan du välja objekt att instrumentera för C++.
Välj OK.
När verktyget har börjat köras går du igenom det scenario som du vill profilera i din app. Välj sedan Stoppa insamling eller stäng appen för att se dina data.
Analysera instrumenteringsrapporten
Dina profileringsdata visas i Visual Studio.
I vyn för instrumenteringsdata visas en lista över funktioner som sorteras efter längst körtid, med den funktion som körts längst överst under Top Functions. I avsnittet Hot Path visas anropsstacken för de funktioner som använder mest tid. De här listorna kan hjälpa dig att få hjälp med funktioner där prestandaflaskhalsar inträffar.
Klicka på en funktion som du är intresserad av och du ser en mer detaljerad vy.
Tillgängliga data liknar cpu-användningsverktyget, förutom att de baseras på klocktid och antal samtal i stället för CPU-användning.
Analysera insikter
Om några insikter visas i avsnittet Top Insights använder du den angivna länken för att få mer information om det identifierade problemet. Mer information finns i CPU-insikter, men tänk på att information för instrumenteringsverktyget är specifik för klocktid på väggen och inte cpu-användning.
Om du använder Copilot använder du dessutom knappen Fråga Copilot för att öppna Copilot-chattfönstret, och Copilot kommer att ge förslag baserat på en undersökning av din kod och eventuella identifierade problem.
Analysera detaljerade rapporter för instrumentation
Om du vill analysera instrumenteringsrapporten klickar du på Öppna informationeller klickar på någon av de översta funktionerna för att öppna Functions-vyn.
Rapporten innehåller olika vyer av diagnostikdata:
- Uppringare/mottagare
- Samtalsträd
- Modules
- Funktioner
- Flamgraf
I alla vyer förutom anropare/anropare sorteras diagnostikrapporten efter Sammanlagt [enhet, %], från högsta till lägsta. Ändra sorteringsordningen eller sorteringskolumnen genom att välja kolumnrubrikerna. Du kan dubbelklicka på en funktion som du är intresserad av, och du ser källan för funktionen samt markeringar som visar var tiden spenderas i den funktionen. Tabellen visar kolumner med data, såsom tiden som används i funktionen, inklusive anropade funktioner (Total), och en andra kolumn som visar tiden som används i en funktion, exklusive anropade funktioner (Self).
Dessa data kan hjälpa dig att bedöma om själva funktionen är en flaskhals för prestanda. Avgör hur mycket data metoden visar för att se om kod från tredje part eller körningsbibliotek är orsaken till att slutpunkterna är långsamma eller resursförbrukningsintensiva.
Mer information om hur du använder Flame-grafen finns i Identifiera heta sökvägar med Flame Graph.
Instrumentationsanropsträd
Om du vill visa anropsträdet väljer du den överordnade noden i rapporten. sidan Instrumentation öppnas som standard i samtals-/uppringarvy. I rullgardinsmenyn Aktuell Vy, välj Samtalsträd. Anropsträdsvyn kan hjälpa dig att snabbt identifiera flaskhalsar i prestanda.
Du kan klicka på knapparna Expandera frekvent sökväg och Visa snabbsökväg för att se de funktionsanrop som använder flest klocktid i vyn samtalsträd.
Här är mer information om kolumnvärdena:
Total anger hur mycket tid som användes i funktionen och vilka funktioner som anropades av den. Höga Totala värden pekar på de funktioner som förbrukar mest klocktid.
Self anger hur mycket tid som spenderades i funktionskroppen, exklusive den tid som spenderades i de funktioner som anropades av den. Höga Själv värden kan tyda på en flaskhals för prestanda i själva funktionen.
Antal samtal anger hur många gånger en funktion anropas.
Modul Namnet på modulen som innehåller funktionen.
Async-anrop i instrumentationsanropsträdet (.NET)
Från och med Visual Studio 2022 version 17.13 Preview 2 är vyer som representerar ett visuellt anropsträd där .NET-asynkrona anrop kapslas under de funktioner där det asynkrona anropet har gjorts, vilket gör det enklare att spåra exekveringsflödet i ett enhetligt stackspår. Detta kan hjälpa dig att snabbt identifiera flaskhalsar i prestanda.
Den enhetliga stackspårningen visas i anropsträdsvyn och avsnittet frekvent sökväg på sammanfattningssidan. Asynkrona noder visas med [Async Call] som beskrivning.
Du kan växla visningen av en sammansydd asynkron anropsstack genom att välja Stitch Async Stacks från alternativet Filter i profilerarens sammanfattningsvy. Inställningen är aktiverad som standard.