Poprawny sposób użycia PerformanceCounter w .NET do pomiaru wykorzystania procesora

Chcę zmierzyć wydajność mojej klasy biznesowej w usłudze internetowej. Jak mogę to zrobić poprzez kodowanie?

Chcę wiedzieć, ile procesora zużywa moja klasa biznesowa do wykonania operacji i jak zmienia się wydajność, jeśli usługa sieciowa otrzyma wiele jednoczesnych wywołań usług.

Nie chcę mierzyć wydajności mojej usługi internetowej; Chcę tylko wiedzieć, jak działa moja klasa biznesowa.

Moja myśl:

Po przeczytaniu niektórych blogów postanawiam napisać fragment kodu, który stworzyPerformanceCounter jak pokazano niżej. Z tego kodu mogę utworzyć wiele wątków w jednymfor pętla. Każdy wątek wywoła moją klasę. I w tym samymfor pętla, zadzwonię doNextValue() metoda na instancji licznika.

System.Diagnostics.PerformanceCounter CpuCounter = new System.Diagnostics.PerformanceCounter();
            CpuCounter.CategoryName = "Process";
            CpuCounter.CounterName = "% Processor Time";
            CpuCounter.InstanceName = Process.GetCurrentProcess().ProcessName;

Pytania:

Czy to podejście jest prawidłowe?Czy mam używać kategorii „Proces” lub „Procesor”?Jak mogę uzyskać dane dotyczące wydajności, aby utworzyć z niego raport? na przykład Przy 100 równoczesnych wątkach zużycie procesora wynosi 70%, przy 200 wątkach dochodzi do 90% itd.Moja logika biznesowa kończy się bardzo szybko. Z drugiej stronyNextValue() metoda daje poprawną wartość po odstępie jednej sekundy, jak wspomniano wto blog. Jak sobie z tym poradzić?Czasami,NextValue() metoda daje wartość powyżej 100. Czy to średnie użycie procesora przekracza 100%? (Myślę, że wartość tego licznika nie powinna być interpretowana jako% wykorzystania procesora. Czy mam rację?)

Uwaga: Używam procesora Windows 7 premium i Intel Core i5. Po raz pierwszy używam liczników wydajności. Więc niektóre pytania mogą być głupie.

questionAnswers(1)

yourAnswerToTheQuestion