Vilket prestandaverktyg ska jag använda? (C#, Visual Basic, C++, F#)
Visual Studio innehåller en mängd olika profileringsverktyg som hjälper dig att diagnostisera olika typer av problem med appprestanda beroende på din apptyp. I den här artikeln ger vi information som hjälper dig att hitta rätt verktyg för ditt scenario och programtyp.
En allmän metod för att optimera kod med hjälp av profileringsverktygen finns i Fallstudie: Nybörjarguide för att optimera kod.
Vilket verktyg ska jag använda?
I följande tabell visas de olika verktyg som Visual Studio erbjuder och innehåller vanliga scenarier för att välja verktyget.
Prestandaverktyg | Beskrivning | När ska verktyget användas? |
---|---|---|
CPU-användning | Visar var processorn spenderar tid. | • Påbörja en undersökning för allmänna prestandaproblem. • Undersök hög processoranvändning på servern. • Undersöka DevOps-scenarier, till exempel när beställningar inte kommer fram till detaljhandelswebbplatsen. • Optimera CPU-användningen. • Undersöka svarstiden i API-anrop. |
flame graph | Visa i verktyget CPU-användning som tillhandahåller en alternativ visualisering av anropsträdet. | Undersöka svarstid i API-anrop |
Snabbsökväg | Visa i verktyget CPU-användning som visar var merparten av cpu-tiden spenderades i ditt program. | Undersöka svarstid i API-anrop |
minnesanvändning | Visar appens minne för att hitta problem som minnesläckor. | • Optimera minnesanvändningen • Undersöka UI-frysning • Undersöka misstänkt minnesläcka (intern kod) |
.NET-objektallokering | Visar var .NET-objekt allokeras och information om skräpinsamling. | • Optimera .NET-minnesanvändning • Analysera skräpinsamling |
Instrumentation | Visar exakta samtalsantal och samtalstider. | • Du behöver ett verktyg som CPU-användning, men du vill ha exakta antal samtal och tid i funktioner baserat på klocktid på väggen. • Du vill se blockerad tid, till exempel tid som ägnas åt att vänta på lås. • Obs! Det här verktyget kräver extra omkostnader. |
fil-I/O- | Visar dina fil-I/O-åtgärder och hur lång tid de tar och hur mycket data de bearbetar. | Undersöka en frysning av användargränssnittet |
PerfTips | Visar ett snabbt mått på prestandainformation när du interagerar med koden. | När du felsöker vill du se den förflutna tiden mellan föregående stegåtgärd (eller brytpunkt) till det aktuella steget eller brytpunkten. |
Händelsevisare | Visar HTTP-begäranden, loggmeddelanden och undantag. | • Undersöka svarstiden i API-anrop • Undersöka långsamma program som körs på en fjärrwebbserver |
.NET Asynkron | Visar async/await-användning i .NET-appar. | Undersök misstänkt prestandaproblem med asynkron kod. |
.NET-räknare | Liverapport för .NET-räknare. | • Påbörja en undersökning för allmänna prestandaproblem. • Du vill ha en spårning för .NET-räknarbaserade mått, till exempel undantag per sekund, skräpinsamling och CPU-användning. |
Databas | Visar prestanda för dina databasfrågor. | Undersök prestanda för databasfrågor som använder antingen ADO.NET eller Entity Framework Core. |
GPU-användning | Visar maskinvaruanvändning på hög nivå för din Direct3D-app. | Kontrollera om appens prestanda är CPU-bunden eller GPU-bunden. |
Tidslinje för ansökan | Visar användargränssnittsprestanda för XAML-appar. | Undersök användargränssnittsprestanda i XAML-appar, till exempel tidsåtgång för återgivningsramar. |
IntelliTrace | Med felsökningsverktyget kan du registrera händelser och undersöka programtillståndet vid olika exekveringspunkter. | Du vill att ett verktyg ska undersöka programtillståndet vid olika tidpunkter, inte bara det aktuella programtillståndet. |
Vilka verktyg stöds för mitt projekt?
I följande tabell visas de olika verktyg som Visual Studio erbjuder och de olika projekttyper som du kan använda dem med:
Prestandaverktyg | .NÄT | C/C++ | UWP | ASP.NET/ASP.NET Core |
---|---|---|---|---|
CPU-användning | Ja | Ja | Ja | Ja |
minnesanvändning | Ja | Ja | Ja | Ja |
.NET-objektallokering | Ja | Nej | Ja | Ja |
Instrumentation | Ja | Ja | Ja | Ja |
Fil-I/O | Ja | Ja | Ja | Ja |
PerfTips | Ja | Ja | Ja | Ja |
Händelsevisaren | Ja | Ja | Ja | Ja |
.NET Async | Ja | Nej | Ja | Ja |
.NET-räknare | Ja (endast .NET Core/5+) | Nej | Nej | Ja (endast ASP.NET Core) |
Databas | Ja (endast .NET Core/5+ ) | Nej | Nej | Ja (endast ASP.NET Core) |
GPU-användning | Ja | Ja | Ja | Nej |
Tidslinje för ansökan | Ja (XAML) | Nej | Ja | Nej |
Prestandautforskaren | Nej | Nej | Nej | Nej |
IntelliTrace | .NET med endast Visual Studio Enterprise | Nej | .NET med endast Visual Studio Enterprise | .NET med endast Visual Studio Enterprise |
Vilka verktyg stöds i Linux?
Följande verktyg stöds med Linux som målplattform samt Windows:
- CPU-användning
- Spårning av .NET-objektallokering
- .NET Async
- .NET-räknare
- Visningsprogram för händelser
- Databas
Lär dig hur du använder profilerare
Följande artiklar och blogginlägg innehåller mer information som hjälper dig att lära dig att använda Visual Studio-prestandaverktygen effektivt.
- Fallstudie: Nybörjarguide för att optimera kod
- Fallstudie: Isolera ett prestandaproblem
- Förbättra Visual Studio-prestanda med det nya instrumenteringsverktyget
- fallstudie: Dubbel prestanda på under 30 minuter