Dela via


Förstå metoder för prestandainsamling för profilering

Det här dokumentet beskriver de datainsamlingsmetoder som verktyg i Visual Studio Performance Profiler använder.

Provtagning

Sampling samlar in statistiska data om det arbete som utförs av ett program under profilering och det är en bra utgångspunkt för att hitta områden för att påskynda ditt program. Med angivna intervall samlar samplingsmetoden in information om de funktioner som körs i ditt program. Datainsamling görs genom att samla in information om programmet med jämna mellanrum eller samplingsfrekvens, till exempel varje millisekunder. De insamlade data analyseras för att skapa en modell för var tiden spenderades i programmet. Om du behöver exakta mätningar av samtalstider eller letar efter prestandaproblem i ett program för första gången kanske du vill använda sampling.

Sampling har mindre noggrannhet i antalet anrop, men är låg kostnad för profileraren och har liten effekt på körningen av programmet som profileras. Verktyg i Prestandaprofiler som använder samplingsmetoden inkluderar verktyget CPU-användning .

När du har slutfört datainsamlingen analyserar verktyget CPU-användning de insamlade data och visar rapporten.

Spårning

Spårning ger bättre information om hur ofta en metod kördes. Om du behöver korrekta mått på anropsnummer använder du spårning. Spårning kan ha en större inverkan på kodens prestanda under samlingen, men samplingen har bara en liten omkostnad. Dessutom kan spårningen vara långsammare att analysera eftersom det tar längre tid att visa data efter insamlingen.

Instrumentation

Instrumentationsprofilering samlar in detaljerad information om det arbete som utförs av ett program under en profileringskörning. Datainsamling görs av verktyg som antingen matar in kod i en binär fil som samlar in tidsinformation eller genom att använda återanropskrokar för att samla in och generera exakt tids- och samtalsantalsinformation medan ett program körs. Instrumentationsmetoden har höga omkostnader jämfört med samplingsbaserade metoder. Verktyg i Prestandaprofiler som använder instrumentation är instrumenteringsverktygen och .NET-objektallokeringsverktyget .

Sampling jämfört med instrumentation

Värdet för sampling är att det har mindre omkostnader och därför är det mer sannolikt att det är statistiskt representativt för det program som körs i produktion. Värdet för instrumentationsprofilering är att du kan få exakta samtalsantal för hur många gånger dina funktioner anropades. Detta ger dig mycket mer detaljerad information än normal sampling, vilket kan förvränga den tid det tar i vissa scenarier. Funktioner som till exempel inte gör mycket, men som anropas ofta, visas mer än de skulle göra i ett verkligt scenario.

Med instrumentation kommenteras och instrumenteras varje funktionsanrop som valts i programmet så att när det anropas läggs det till i spårningen tillsammans med information om anroparen. Med sampling avsöks den nuvarande anropsstacken från processorn med ett intervall och sedan läggs varje stackram till i spårningen.