Programmering

Hvordan jobbe med prestasjonsteller i C #

Windows holder øye med prosessene og tjenestene som kjører i systemet ditt ved å spore trådene som er i gang, CLR-minnet osv. Du må ofte måle ytelsen til datasystemer eller applikasjonene som kjører på dem i henhold til til beregninger som for ressursforbruket i systemet, tjenester som kjører på systemet eller ytelsen til enhetene som er koblet til systemet.

Performance counter (en funksjon som tilbys som standard) gjør det mulig for oss å fange, publisere og analysere ytelsesdataene knyttet til en eller flere applikasjoner eller tjenester som kjører i systemet eller systemet som helhet.

Mens du bygger applikasjoner, kan det hende du ofte trenger å overvåke ytelsen (ressursforbruk eller bruk over en periode) og bruke ytelsesdataene til å identifisere flaskehalsene i applikasjonen. Her er ytelsestellere nyttige. Du kan også bruke WMI (Windows Management Instrumentation), en COM-basert Microsoft-teknologi, for å hente disse detaljene, men ytelsestellere gir deg en måte å få sanntidsstatistikk over ressursforbruket i systemet ditt under kjøretid.

Performance Monitor (et verktøy som leveres som standard i Windows OS) snap-in kan brukes til å vise ytelsesdataene i sanntid. For å starte dette verktøyet, klikk på Start-menyen og klikk på "Kjør". Skriv deretter "perfmon" og trykk enter.

Egendefinerte ytelsestellere

Å lage tilpassede ytelsestellere er enkelt. Du kan opprette ytelsestellere ved hjelp av Server Explorer. Du må først opprette ytelsestellerkategorien og deretter opprette en eller flere tellere som en del av den kategorien.

For å jobbe med ytelsestellere programmatisk, kan du bruke klassen System.Diagnostics.PerformanceCounter. Du må opprette en forekomst av PerformanceCounter-klassen og deretter spesifisere de nødvendige verdiene for hver av disse egenskapene: CategoryName, CounterName, MachineName og ReadOnly.

For å opprette en tilpasset ytelsestellerkategori, må du utnytte Create-metoden i PerformanceCounterCategory-klassen. Som et eksempel kan følgende kodebit brukes til å lage en tilpasset ytelsesteller-kategori.

PerformanceCounterCategory.Create ("CustomPerformanceCounterCategoryName", "CustomPerformanceCounterHelp", PerformanceCounterCategoryType.MultiInstance,

"CustomPerformanceCounterName", "CustomPerformanceCounterHelp");

Følgende kodebit viser hvordan du kan vise alle tilgjengelige tellerkategorier.

statisk tomrom Main ()

    {

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ();

foreach (PerformanceCounterCategory performanceCounterCategory in performanceCounterCategories)

        {

Console.WriteLine (performanceCounterCategory.CategoryName);

        }

Console.Read ();

    }

Følgende kodebit illustrerer hvordan du kan hente ytelsestellere som tilhører kategorien "Prosessor".

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ()

.FirstOrDefault (category => category.CategoryName == "Processor");

var performanceCounters = performanceCounterCategories.GetCounters ("_ Total");

Du må bruke PerformanceCounter-klassen for å lese en ytelsesteller som tilhører en bestemt kategori. Merk at PerformanceCounter-klassen er tilgjengelig i navneområdet System.Diagnostics. Her er den komplette kodelisten som viser hvordan du kan vise ytelsestellernavnet til alle ytelsestellere som tilhører kategorien "Prosessor".

statisk tomrom Main ()

    {

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ()

.FirstOrDefault (category => category.CategoryName == "Processor");

var performanceCounters = performanceCounterCategories.GetCounters ("_ Total");

Console.WriteLine ("Viser ytelsestellere for prosessorkategori: - \ n");

foreach (PerformanceCounter performanceCounter in performanceCounters)

        {

Console.WriteLine (performanceCounter.CounterName);

        }

Console.Read ();

    }

Du kan også lage din egendefinerte ytelsesteller og skrive data i dem. For å gjøre dette, bør du dra nytte av klassene CounterCreationDataCollection og CounterCreationData.

String customCategory = "Custom Performance Counter Category";

hvis (! PerformanceCounterCategory.Exists (customCategory))

{

CounterCreationDataCollection counterCreationDataCollection = ny CounterCreationDataCollection ();

counterCreationDataCollection.Add (ny CounterCreationData ("Counter 1", "Sample Counter 1", PerformanceCounterType.ElapsedTime));

counterCreationDataCollection.Add (ny CounterCreationData ("Counter 2", "Sample Counter 2", PerformanceCounterType.SampleCounter));

counterCreationDataCollection.Add (ny CounterCreationData ("Counter 3", "Sample Counter 3", PerformanceCounterType.SampleCounter));

PerformanceCounterCategory.Create (customCategory, "Dette er bare et eksempel", PerformanceCounterCategoryType.SingleInstance, counterCreationDataCollection);

}

Vær oppmerksom på at det allerede finnes en sjekk hvis den er validert hvis den tilpassede ytelsestelleren som skal opprettes. Den tilpassede ytelsestelleren opprettes bare hvis den ikke eksisterer. Deretter opprettes en forekomst av CounterCreaionDataCollection. Ved bruk av CounterCreationData-klassen blir nye tellere lagt til i samlingen. Når de nødvendige tellerne er lagt til, kalles Create-metoden i PerformanceCounterCategory-klassen for å opprette den egendefinerte ytelseskategorien.

Merk at søknaden din skal ha de nødvendige tillatelsene for å få tilgang til ytelsestellere du trenger. Jeg vil alltid anbefale å starte Visual Studio IDE i administratormodus. Ytelsestellere hjelper mye med å analysere ytelsen til applikasjonene dine - du kan analysere ytelsesdataene når applikasjonen din er i utførelse.

$config[zx-auto] not found$config[zx-overlay] not found