Omówienie metod zbierania wydajności profilera
W tym dokumencie opisano metody zbierania danych używane przez narzędzia w programie Visual Studio Performance Profiler.
Próbkowanie
Próbkowanie zbiera dane statystyczne dotyczące pracy wykonywanej przez aplikację podczas profilowania. Dobrym miejscem do znalezienia obszarów przyspieszających działanie aplikacji. W określonych interwałach metoda próbkowania zbiera informacje o funkcjach wykonywanych w aplikacji. Zbieranie danych odbywa się poprzez zbieranie informacji o aplikacji w regularnych odstępach czasu lub częstotliwości próbkowania, takich jak co milisekundy. Zebrane dane są analizowane w celu utworzenia modelu czasu spędzonego w aplikacji. Jeśli potrzebujesz dokładnych pomiarów czasów wywołań lub szukasz problemów z wydajnością w aplikacji po raz pierwszy, możesz użyć próbkowania.
Próbkowanie ma mniejszą dokładność liczby wywołań, ale jest to niski koszt profilera i ma niewielki wpływ na wykonywanie profilowanej aplikacji. Narzędzia w profilerze wydajności, które korzystają z metody próbkowania, obejmują narzędzie Użycie procesora CPU.
Po zakończeniu zbierania danych narzędzie Użycie procesora CPU analizuje przechwycone dane i wyświetla raport.
Śledzenie
Śledzenie zapewnia lepsze informacje na temat częstotliwości wykonywania metody. Jeśli potrzebujesz dokładnych miar numerów połączeń, użyj śledzenia. Śledzenie może mieć większy wpływ na wydajność kodu podczas zbierania, ale próbkowanie ma tylko niewielkie obciążenie. Ponadto śledzenie może być wolniejsze do przeanalizowania, ponieważ wyświetlenie danych po zebraniu trwa dłużej.
Oprzyrządowanie
Profilowanie instrumentacji zbiera szczegółowe informacje o pracy wykonywanej przez aplikację podczas przebiegu profilowania. Zbieranie danych odbywa się za pomocą narzędzi, które iniekują kod do pliku binarnego, który przechwytuje informacje o chronometrażu lub za pomocą punktów zaczepienia wywołania zwrotnego w celu zbierania i emitowania dokładnych informacji o chronometrażu i liczbie wywołań podczas uruchamiania aplikacji. Metoda instrumentacji ma duże obciążenie w porównaniu z metodami opartymi na próbkowaniu. Narzędzia w profilerze wydajności, które korzystają z instrumentacji, obejmują narzędzia instrumentacji i narzędzie alokacji obiektów platformy .NET.
Próbkowanie a instrumentacja
Wartość próbkowania polega na tym, że ma mniejsze obciążenie i z tego powodu jest bardziej prawdopodobne, aby statystycznie reprezentatywne dla aplikacji działającej w środowisku produkcyjnym. Wartość profilowania instrumentacji polega na tym, że można uzyskać dokładne liczby wywołań dotyczących liczby wywołań, ile razy wywołano funkcje. Zapewnia to znacznie bardziej szczegółowe informacje niż zwykłe próbkowanie, które może zniekształcać czas potrzebny w niektórych scenariuszach. Na przykład funkcje, które nie robią zbyt wiele, ale są wywoływane często, będą wyświetlane bardziej niż w rzeczywistym scenariuszu.
W przypadku instrumentacji każde wywołanie funkcji wybrane w aplikacji jest oznaczone adnotacjami i instrumentowane, dzięki czemu po wywołaniu jest dodawany do śledzenia wraz z informacjami o obiekcie wywołującym. W przypadku próbkowania bieżący stos wywołań wykonywany jest sondowany z procesora CPU w odstępach czasu, a następnie każda ramka jest dodawana do śledzenia.