Programmering

Sådan arbejder du med præstationstællere i C #

Windows holder øje med de processer og tjenester, der kører i dit system ved at spore de tråde, der i øjeblikket er i udførelse, CLR-hukommelsen osv. til målinger som f.eks. ressourceforbruget i systemet, tjenester, der kører på systemet, eller ydeevnen for de enheder, der er knyttet til systemet.

Performance-tællere (en funktion leveret som standard) giver os mulighed for at indfange, offentliggøre og analysere performance-data relateret til en eller flere applikationer eller tjenester, der kører i systemet eller systemet som helhed.

Mens du bygger applikationer, skal du muligvis ofte overvåge dens ydeevne (ressourceforbrug eller brug over en periode) og bruge ydeevnedata til at identificere flaskehalse i applikationen. Her er hvor præstationstællere er nyttige. Du kan også bruge WMI (Windows Management Instrumentation), en COM-baseret Microsoft-teknologi, til at hente disse detaljer, men præstationstællere giver dig en måde at få realtidsstatistikker over ressourceforbruget i dit system ved kørselstid.

Ydelsesmonitor (et værktøj, der leveres som standard i Windows OS) snap-in kan bruges til at se præstationsdataene i realtid. For at starte dette værktøj skal du klikke på Start-menuen og klikke på "Kør". Skriv derefter "perfmon" og tryk på enter.

Brugerdefinerede præstationstællere

Oprettelse af brugerdefinerede præstationstællere er enkel. Du kan oprette præstationstællere ved hjælp af Server Explorer. Du skal først oprette præstationstællerkategorien og derefter oprette en eller flere tællere som en del af den kategori.

For at arbejde med præstationstællere programmatisk kan du bruge klassen System.Diagnostics.PerformanceCounter. Du skal oprette en forekomst af PerformanceCounter-klassen og derefter angive de nødvendige værdier for hver af disse egenskaber: CategoryName, CounterName, MachineName og ReadOnly.

For at oprette en tilpasset præstationstællerkategori skal du udnytte metoden Opret i PerformanceCounterCategory-klassen. Som et eksempel kan følgende kodestykke bruges til at oprette en brugerdefineret præstationstællerkategori.

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

"CustomPerformanceCounterName", "CustomPerformanceCounterHelp");

Følgende kodestykke viser, hvordan du kan vise alle tilgængelige tællerkategorier.

statisk tomrum Main ()

    {

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ();

foreach (PerformanceCounterCategory performanceCounterCategory in performanceCounterCategories)

        {

Console.WriteLine (performanceCounterCategory.CategoryName);

        }

Console.Read ();

    }

Følgende kodestykke illustrerer, hvordan du kan hente præstationstællere, der hører til kategorien "Processor".

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ()

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

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

Du skal bruge PerformanceCounter-klassen til at læse en performance counter, der hører til en bestemt kategori. Bemærk, at PerformanceCounter-klassen er tilgængelig i navneområdet System.Diagnostics. Her er den komplette kodeliste, der viser, hvordan du kan vise præstationstællernavnene på alle de præstationstællere, der hører til kategorien "Processor".

statisk tomrum Main ()

    {

var performanceCounterCategories = PerformanceCounterCategory.GetCategories ()

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

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

Console.WriteLine ("Viser præstationstællere for Processorkategori: - \ n");

foreach (PerformanceCounter performanceCounter in performanceCounters)

        {

Console.WriteLine (performanceCounter.CounterName);

        }

Console.Read ();

    }

Du kan også oprette din tilpassede præstationstæller og skrive data i dem. For at gøre dette skal du drage fordel af klasserne 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);

}

Bemærk, at der allerede findes en kontrol, hvis den er foretaget for at validere, om den tilpassede præstationstæller, der skal oprettes. Den tilpassede præstationstæller oprettes kun, hvis den ikke findes. Dernæst oprettes en forekomst af CounterCreaionDataCollection. Ved hjælp af CounterCreationData-klassen føjes nye tællere til samlingen. Når de nødvendige tællere er tilføjet, kaldes Opret-metoden i PerformanceCounterCategory-klassen for at oprette den tilpassede præstationskategori.

Bemærk, at din applikation skal have de nødvendige tilladelser til at få adgang til de præstationstællere, du har brug for. Jeg vil altid anbefale at starte Visual Studio IDE i administratortilstand. Ydelsestællere hjælper meget med at analysere effektiviteten af ​​dine applikationer - du kan analysere ydeevnedataene på det tidspunkt, hvor din applikation er i udførelse.