Titta först på profileringsverktyg (C#, Visual Basic, C++, F#)
Mätverktyg för programprestanda är viktiga för utvecklare som vill optimera sin kod och förbättra programprestanda. Visual Studio erbjuder en rad profilerings- och diagnostikverktyg som kan hjälpa dig att diagnostisera minnes- och CPU-användning och andra problem på programnivå. Med de här verktygen kan du samla in prestandadata när du kör programmet. En profilerare kan hjälpa dig att fatta välgrundade beslut snabbt genom att tillhandahålla en visuell beskrivning av körningstider och CPU-användning för ditt program. I den här artikeln ger vi en snabb titt på de vanligaste profileringsverktygen.
Mer information om hur du väljer rätt verktyg eller om du vill se stöd för profileringsverktyg för olika apptyper finns i Vilket verktyg ska jag använda? En självstudiekurs som visar en allmän metod för att optimera kod med hjälp av profileringsverktygen finns i Fallstudie: Nybörjarguide för att optimera kod.
För bästa möjliga upplevelse av den här dokumentationen väljer du önskat utvecklingsspråk eller körningsspråk i listan överst i artikeln.
Mäta prestanda i releaseversioner
Verktyg i Prestandaprofiler är avsedda att tillhandahålla analys för Version versioner. I Prestandaprofilern kan du samla in diagnostikinformation medan appen körs, och sedan undersöka den insamlade informationen efter att appen har avslutats (en efterhandsanalys).
Öppna Prestandaprofiler genom att välja Felsöka>Performance Profiler (eller Alt + F2).
Mer information om hur du använder verktyget CPU-användning eller minnesanvändningsverktyget i prestandaprofileraren jämfört med de verktygen som är integrerade i felsökaren, finns i Kör profileringsverktyg på release- eller debug-versioner.
Verktyg som är tillgängliga i Prestandaprofiler inkluderar:
Information om hur du ser stöd för profileringsverktyg för olika apptyper finns i Vilket verktyg ska jag använda?.
I vissa scenarier kan fönstret låta dig välja flera profileringsverktyg. Verktyg som CPU-användning kan ge kompletterande data som du kan använda för att hjälpa dig med din analys. Du kan också använda kommandoradsprofilerare för att aktivera scenarier med flera profileringsverktyg.
Mäta prestanda vid felsökning
De profileringsverktyg som du kan komma åt under en felsökningssession är tillgängliga i fönstret Diagnostikverktyg. Fönstret Diagnostikverktyg visas automatiskt om du inte har inaktiverat det. Om du vill öppna fönstret klickar du på Felsökning/Windows/Visa diagnostikverktyg (eller trycker på Ctrl + Alt + F2). När fönstret är öppet kan du välja verktyg som du vill samla in data för.
Fönstret
När du felsöker kan du använda fönstret Diagnostikverktyg för att analysera CPU, minnesanvändning, .NET-räknare och du kan visa händelser som visar prestandarelaterad information.
När du felsöker kan du använda fönstret Diagnostikverktyg för att analysera processor- och minnesanvändning och du kan visa händelser som visar prestandarelaterad information.
Fönstret Diagnostikverktyg är ett vanligt sätt att profilera appar, men för release-versioner kan du också göra en post-mortem-analys av din app istället. Mer information om olika metoder finns i Kör profileringsverktyg för versions- eller felsökningsbyggen. Information om hur du ser stöd för profileringsverktyg för olika apptyper finns i Vilket verktyg ska jag använda?.
Verktyg som är tillgängliga i fönstret Diagnostikverktyg eller under en felsökningssession är:
Tips
Använd nystart för att hoppa över startsidan och kör automatiskt med dina tidigare inställningar genom att trycka på Alt+F2- eller genom att klicka på Felsöka > Performance Profiler.
Not
Windows 8 och senare krävs för att köra profileringsverktyg med felsökningsprogrammet (fönstret Diagnostikverktyg).
Analysera CPU-användning
Verktyget CPU-användning är ett bra ställe att börja analysera appens prestanda på. Du får mer information om processorresurser som din app förbrukar. Du kan använda verktyget processoranvändning integrerat med felsökaren eller verktyget verktyget för analys av processoranvändning efter haveri.
När du använder verktyget för felsökningsintegrerad CPU-användning öppnar du fönstret Diagnostikverktyg (om det är stängt väljer du Felsöka/Windows/Visa diagnostikverktyg). När du felsöker öppnar du vyn Sammanfattning och väljer Registrera CPU-profil.
Ett sätt att använda verktyget är att ange två brytpunkter i koden, en i början och en i slutet av funktionen eller den region med kod som du vill analysera. Granska profileringsdata när du har stannat vid den andra brytpunkten.
Vyn CPU-användning visar en lista över funktioner som sorteras efter den längsta körtiden, med den längst körande funktionen längst upp under Toppfunktioner. I avsnittet Hot Path visas anropsstacken för de funktioner som använder mest CPU. De här listorna kan guida dig till funktioner där flaskhalsar i prestanda uppstår.
Vyn CPU-användning visar en lista över funktioner ordnad efter längst körtid, med den funktion med längst körtid överst. Detta kan hjälpa dig att hitta funktioner där prestandaflaskhalsar uppstår.
Klicka på en funktion som du är intresserad av, så visas en mer detaljerad Samtalsträd vy med den valda funktionen markerad. Tabellen visar kolumner med data, till exempel tiden som spenderas i funktionen, inklusive kallade funktioner (Total CPU), och en andra kolumn som visar tiden som spenderas i en funktion, exklusive kallade funktioner (Egen CPU). Dessa data kan hjälpa dig att utvärdera om själva funktionen är en flaskhals för prestanda.
Tips
Visual Studio Profiler stöder både insamling och visning av spårningar. Profileraren kan också visa spårningar som har samlats in tidigare av andra verktyg, till exempel dotnet-trace. Dotnet-trace ger samplingsresultat, inte en instrumenterad spårning. Mer information finns i dotnet-trace.
Klicka på en funktion som du är intresserad av, så får du se en mer detaljerad tre-delad fjärilsvy, med den valda funktionen i mitten av fönstret, den anropande funktionen till vänster och anropade funktioner till höger. Avsnittet Funktionstext visar den totala tiden (och procentandelen tid) som spenderas i funktionstexten, exklusive tid som ägnas åt att anropa och anropa funktioner. Dessa data kan hjälpa dig att utvärdera om själva funktionen är en flaskhals för prestanda.
Analysera minnesanvändning
I fönstret Diagnostikverktyg kan du också utvärdera minnesanvändningen i din app med hjälp av verktyget Minnesanvändning. Du kan till exempel titta på antalet och storleken på objekten i heapen. Du kan använda verktyget felsökningsintegrerad minnesanvändning eller verktyget minnesanvändning efter döden i Prestandaprofiler.
.NET-utvecklare kan välja mellan antingen verktyget .NET-objektallokering eller verktyget Minnesanvändning.
- Verktyget .NET Object Allocation hjälper dig att identifiera allokeringsmönster och avvikelser i .NET-koden och hjälper dig att identifiera vanliga problem med skräpinsamling. Det här verktyget körs endast som ett efterhandsverktyg. Du kan köra det här verktyget på lokala datorer eller fjärrdatorer.
- Verktyget Minnesanvändning är användbart för att identifiera minnesläckor, som vanligtvis inte är vanliga i .NET-appar. Om du behöver använda felsökningsfunktioner när du kontrollerar minnet, till exempel genom att gå igenom kod, rekommenderas det felsökningsintegrerade verktyget minnesanvändning.
Om du vill analysera minnesanvändning med verktyget Minnesanvändning måste du ta minst en ögonblicksbild av minnet. Ofta är det bästa sättet att analysera minnet att ta två ögonblicksbilder. den första precis före ett misstänkt minnesproblem och den andra ögonblicksbilden direkt efter att ett misstänkt minnesproblem inträffar. Sedan kan du visa ett diff av de två ögonblicksbilderna och se exakt vad som har ändrats. Följande bild visar hur du tar en ögonblicksbild med det felsökningsintegrerade verktyget.
När du väljer någon av pillänkarna får du en differentiell vy av heapen (en röd uppåtpil visar ett ökande antal objekt (vänster) eller en ökande heapstorlek (höger)). Om du klickar på den högra länken får du en differentiell heapvy sorterad efter objekt som har ökat mest i heapstorlek. Detta kan hjälpa dig att hitta minnesproblem. I bilden nedan ökade till exempel de byte som används av ClassHandlersStore
objekt med 3 492 byte i den andra ögonblicksbilden.
Om du klickar på länken till vänster i stället i vyn Minnesanvändning ordnas heapvyn efter antal objekt. objekten av en viss typ som ökade mest i antal visas högst upp (sorterade efter Count Diff column).
Instrumentation
Instrumenteringsverktyget liknar CPU-användningsverktyget, förutom att det ger exakta anropsantal och väggklocktid istället för CPU-användning. Instrumenteringsmetoden kräver mer omkostnader än cpu-användningsverktyget. Det här verktyget är tillgängligt i Prestandaprofiler. Öppna Prestandaprofiler genom att välja Felsöka>Performance Profiler (eller Alt + F2). Mer information finns i Instrumentation.
Granska fil-I/O
Verktyget File I/O hjälper dig att förstå hur du kan optimera dina fil-I/O-operationer för att förbättra prestanda i dina appar. Om du försöker undersöka och diagnostisera långsamma inläsningstider kan det nya fil-I/O-verktyget hjälpa dig att förstå hur I/O-åtgärderna påverkar din tid. Det här verktyget är tillgängligt i Prestandaprofiler. Öppna Prestandaprofiler genom att välja Felsöka > Prestandaprofiler (eller Alt + F2).
Verktyget visar filläsnings- och filskrivningsåtgärder i en listvy med flikar.
Granska prestanda med hjälp av PerfTips
Det enklaste sättet att visa prestandainformation är ofta att använda PerfTips. Med Hjälp av PerfTips kan du visa prestandainformation när du interagerar med din kod. Du kan kontrollera information, till exempel varaktigheten för händelsen (mätt från när felsökningsprogrammet senast pausades eller när appen startade). Om du till exempel går igenom kod (F10, F11) visar PerfTips appens körningstid från föregående steg till det aktuella steget.
Du kan använda PerfTips för att undersöka hur lång tid det tar för ett kodblock att köras, eller hur lång tid det tar för en enskild funktion att slutföras.
PerfTips visar samma händelser som också visas i Händelser vy över diagnostikverktygen. I vyn Händelser kan du visa olika händelser som inträffar när du felsöker, till exempel inställningen för en brytpunkt eller en stegåtgärd för kod.
sv-SE:
Not
Om du har Visual Studio Enterprise kan du också se IntelliTrace-händelser på den här fliken.
Analysera asynkron kod (.NET)
Med verktyget .NET Async kan du analysera prestanda för asynkron kod i ditt program. Det här verktyget är tillgängligt i Prestandaprofiler. Öppna Prestandaprofiler genom att välja Felsöka>Performance Profiler (eller Alt + F2).
Verktyget visar varje asynkron åtgärd i en listvy. Du kan se information som starttid, sluttid och total tid för en asynkron åtgärd.
Det här verktyget stöds för .NET Core- och .NET 5+-appar.
Analysera asynkron kod (.NET)
Med verktyget .NET Async kan du analysera prestanda för asynkron kod i ditt program. Det här verktyget är tillgängligt i Prestandaprofiler. Öppna Prestandaprofiler genom att välja Felsöka>Performance Profiler (eller Alt + F2).
Verktyget visar varje asynkron åtgärd i en listvy. Du kan se information som starttid, sluttid och total tid för en asynkron åtgärd.
Det här verktyget stöds för .NET Core- och .NET 5+-appar.
Analysera databasprestanda (.NET)
För .NET Core- och .NET 5+-appar som använder ADO.NET eller Entity Framework Core kan du med verktyget Database registrera databasfrågorna som programmet gör under en diagnostiksession. Du kan sedan analysera information om enskilda frågor för att hitta platser där appens prestanda kan förbättras. Det här verktyget är tillgängligt i Prestandaprofiler. Öppna Prestandaprofiler genom att välja Felsöka>Performance Profiler (eller Alt + F2).
Verktyget visar varje fråga i en listvy. Du kan se information som starttid och varaktighet för frågan.
Visualisera .NET-räknare (.NET)
Från och med Visual Studio 2019 version 16.7 kan du använda verktyget .NET Counters i Visual Studio för att visualisera prestandaräknare. Du kan visualisera räknare som skapats med hjälp av dotnet-räknare. dotnet counters stöder många mätare, som till exempel CPU-användning och heapstorlek för avfallsinsamling.
Verktyget visar livevärden för varje räknare i en listvy.
Det här verktyget stöds för .NET Core- och .NET 5+-appar.
Granska programhändelser
Med den allmänna loggboken kan du visa programmets aktivitet via en lista över händelser, till exempel modulinläsning, trådstart och systemkonfigurationer, för att hjälpa dig att bättre diagnostisera hur programmet fungerar direkt i Visual Studio-profileraren. Det här verktyget är tillgängligt i Prestandaprofiler. Öppna Prestandaprofiler genom att välja Felsöka>Performance Profiler (eller Alt + F2).
Verktyget visar varje händelse i en listvy. Kolumner innehåller information om varje händelse, till exempel händelsenamn, tidsstämpel och process-ID.
Visa anpassade händelser i tidslinjediagram
Du kan programatiskt skapa anpassade händelser som visas som ikoner i tidslinjediagram som diagram över processoranvändning och tidslinjediagram för minnesanvändning. Mer information finns i Lägg till användarmarkeringar i tidslinjen.
Analysera resursförbrukning (XAML)
I XAML-appar, till exempel WPF-appar för Windows-skrivbord och UWP-appar, kan du analysera resursförbrukningen med hjälp av verktyget Programtidslinje. Du kan till exempel analysera den tid som ditt program lägger på att förbereda gränssnittsramar (layout och återgivning), underhålla nätverks- och diskbegäranden och i scenarier som programstart, sidinläsning och Storleksändring av fönster. Om du vill använda verktyget väljer du programtidslinje i Prestandaprofiler och väljer sedan Starta. I din app går du igenom scenariot med ett misstänkt resursförbrukningsproblem och väljer sedan Stoppa samling för att generera rapporten.
Låga framerates i det visuella dataflödet grafen kan motsvara visuella problem som du ser när du kör din app. På samma sätt kan höga tal i UI-trådutnyttjande grafen också motsvara UI-responsivitetsproblem. I rapporten kan du välja en tidsperiod med ett misstänkt prestandaproblem och sedan undersöka de detaljerade gränssnittstrådsaktiviteterna i vyn Tidslinjeinformation (nedre fönstret).
I vyn Tidslinjeinformation kan du hitta information, till exempel typen av aktivitet (eller användargränssnittselementet) tillsammans med aktivitetens varaktighet. I bilden tar till exempel en layout händelse för en rutnätskontroll 57,53 ms.
Mer information finns i Ansökningsprocess.
Granska användargränssnittsprestanda och tillgänglighetshändelser (UWP)
I dina UWP-appar kan du aktivera UI Analysis i verktygsfönstret Diagnostik. Verktyget söker efter vanliga prestanda- eller hjälpmedelsproblem och visar dem i vyn Händelser medan du felsöker. Händelsebeskrivningarna innehåller information som kan hjälpa dig att lösa problem.
Analysera GPU-användning (Direct3D)
I Direct3D-appar (Direct3D-komponenter måste finnas i C++) kan du undersöka aktiviteten på GPU:n och analysera prestandaproblem. Mer information finns i GPU-användning. Om du vill använda verktyget väljer du GPU-användning i Prestandaprofiler och väljer sedan Starta. I din app går du igenom det scenario som du vill profilera, och väljer sedan Stoppa insamling för att generera en rapport.
När du väljer en tidsperiod i graferna och väljer visa informationvisas en detaljerad vy i det nedre fönstret. I den detaljerade vyn kan du undersöka hur mycket aktivitet som händer på varje PROCESSOR och GPU. Välj händelser i den lägsta rutan för att få popup-fönster i tidslinjen. Välj till exempel händelsen Presentera för att visa popup-fönster för Presentera-anrop. (De ljusgrå lodräta VSync-linjerna kan användas som referens för att förstå om vissa Present anrop missade VSync. Det måste finnas ett Present anrop mellan varje två VSync-signaler för att appen stadigt ska hålla 60 FPS.)
Du kan också använda graferna för att avgöra om det finns cpu-bundna eller GPU-bundna prestandaflaskhalsar.
Analysera prestanda (äldre verktyg)
I Visual Studio 2019 integrerades den äldre Prestandautforskaren och relaterade profileringsverktyg, till exempel Performance Wizard, in i Prestandaprofileraren, som du kan öppna med hjälp av Felsöka>Performance Profiler. I Prestandaprofiler är de tillgängliga diagnostikverktygen beroende av det valda målet och det aktuella, öppna startprojektet. Verktyget CPU-användning tillhandahåller samplingsfunktionen som tidigare stöds i prestandaguiden. Instrumenteringsverktyget tillhandahåller den instrumenterade profileringsfunktionen (för exakta antal samtal och varaktigheter) som fanns i prestandaguiden. Ytterligare minnesverktyg visas också i Prestandaprofiler.