Wybieranie spośród profilera wydajności programu Visual Studio, zestawu narzędzi Windows Performance Toolkit i narzędzia PerfView

Ten przewodnik zawiera ogólne porównanie podstawowych technologii profilowania wydajności ogólnego przeznaczenia w firmie Microsoft: Visual Studio Performance Profiler, Windows Performance Toolkit i PerfView.

Te narzędzia mogą ułatwić diagnozowanie i zrozumienie cech wydajności aplikacji w systemie Windows. Celem tego przewodnika jest przedstawienie informacji o tym, kiedy używać ich nawzajem, podkreślając każdą z ich mocnych stron i oferując krótkie omówienie funkcji, które zawierają.

Przegląd

Profiler wydajności programu Visual Studio jest tworzony przez zespół programu Visual Studio, aby szybko zrozumieć charakterystykę wydajności aplikacji opracowywanej w istniejącym systemie projektów programu Visual Studio. Jego siła jest ściśle zintegrowana z aktywnym projektem projektowym, upraszczając analizę najbardziej typowych scenariuszy wydajności i szybką, łatwą kolekcję tylko jednej aplikacji.

Zestaw narzędzi Windows Performance Toolkit jest tworzony przez zespół systemu Windows w celu zrozumienia szerokich cech całego komputera jednocześnie. Chociaż dorastał od konieczności analizowania sprzętu i sterowników, jest bardzo skuteczny w zrozumieniu problemów z oprogramowaniem. Jego siła polega na zbieraniu dużych ilości informacji z całej maszyny jednocześnie, więc problemy z wieloma procesami, te, które mają do czynienia ze sprzętem lub sterownikami, i złożone scenariusze są dobrze dopasowane do tych narzędzi.

Narzędzie PerfView jest tworzone przez zespół platformy .NET w celu zrozumienia wydajności aplikacji platformy .NET. Podobnie jak zestaw narzędzi Windows Performance Toolkit, może zbierać duże ilości informacji z całej maszyny jednocześnie. Wyróżnia się możliwością wyświetlania bardzo szczegółowych informacji o usługach środowiska uruchomieniowego .NET, takich jak zbieranie śmieci, kompilacja w locie oraz zarządzanie pulą wątków. Narzędzie PerfView może być używane w przypadku aplikacji zarządzanych, natywnych i mieszanych.

Te narzędzia nakładają się na siebie. Często możesz rozpocząć eksplorowanie problemu w jednym narzędziu i przełączyć się do innego widoku tego samego scenariusza. Innym razem jeden z narzędzi będzie bardziej skuteczny niż inne.

Installation

Profiler wydajności programu Visual Studio jest składnikiem samego programu Visual Studio i można go zainstalować za pośrednictwem tego samego kreatora instalacji , co reszta środowiska programistycznego.

Zestaw narzędzi Windows Performance Toolkit można pobrać oddzielnie w ramach zestawu Windows Assessment and Deployment Kit. Jednak narzędzie do nagrywania wydajności wiersza poleceń jest wstępnie zainstalowane z systemami Windows 10 i Windows 11 i jest dostępne w domyślnej zmiennej środowiskowej ścieżki w powłokach takich jak PowerShell i Wiersz polecenia.

Analizator wydajności jest dostępny jako aplikacja w sklepie Microsoft Store.

Aplikacja PerfView jest dostępna jako autonomiczny plik do pobrania na stronie Wydania usługi GitHub programu PerfView . Instalacja nie jest wymagana.

Dostosowywanie pod kątem zaawansowanych scenariuszy analizy wydajności

Zestaw narzędzi Windows Performance Toolkit oferuje ponadto dwa punkty rozszerzalności, które mogą obsługiwać zaawansowane scenariusze analizy wydajności.

  • Zestaw MICROSOFT Performance Toolkit SDK obsługuje przetwarzanie danych śledzenia i umożliwia deweloperom tworzenie własnych wtyczek do wyświetlania w analizatorze wydajności systemu Windows.
  • Funkcja .NET TraceProcessing umożliwia tworzenie niestandardowych narzędzi, które mogą przetwarzać informacje śledzenia w tabelach wynikowych i jest szczególnie przydatne w przypadku zautomatyzowanej analizy danych śledzenia zbiorczego.

Narzędzie PerfView jest podobnie oparte na bibliotece TraceEvent platformy .NET do programowego przetwarzania śladów wydajności. Narzędzie TraceEvent może być używane niezależnie od elementu PerfView do przeprowadzania niestandardowej analizy danych śledzenia wydajności.

Uwaga / Notatka

Aby scenariusze analizy wydajności działały, musisz mieć dostęp do symboli skorelowanych z testowanej aplikacji systemu Windows. Podczas kompilowania przy użyciu programu Visual Studio będą one znajdować się tak samo jak w ustawieniach scenariusza debugowania, skompilowanych przy użyciu rozwiązania lub przechwyconych z serwerów symboli. Podczas analizowania innych bibliotek lub składników należy zlokalizować symbole dla tych składników w celu ukończenia analizy.

Zagadnienia dotyczące wybierania narzędzia

Wybrane narzędzie zależy od scenariusza wydajności, który próbujesz zbadać. Porównanie funkcji i cech między narzędziami znajduje się w poniższej tabeli, w której:

  • Dobrze obsługiwane oznacza, że narzędzie jest przeznaczone do zamierzonego zadania i osiąga niezawodne i szczegółowe wyniki.
  • Obsługiwane oznacza, że narzędzie może wymagać dodatkowej konfiguracji lub kroków w celu uzyskania pożądanych wyników. Może obejmować ograniczony zakres działań w kategorii.
  • Nieobsługiwane oznacza, że narzędzie nie jest przeznaczone do tego użycia.

Wskazówka

Aby uzyskać ogólną regułę, zacznij od profilowania programu Visual Studio , jeśli jest to możliwe. Przejdź do zestawu narzędzi Windows Performance Toolkit lub PerfView , gdy osiągniesz limity możliwości narzędzi programu Visual Studio.

Situation Profiler wydajności programu Visual Studio Narzędzie do monitorowania wydajności systemu Windows Narzędzie PerfView
Zagadnienia dotyczące ogólnego użycia
Rozmiar pliku śledzenia Dobrze obsługiwane Supported Supported
Pozyskiwanie narzędzi Dobrze obsługiwane Dobrze obsługiwane Dobrze obsługiwane
Zestawy rozszerzalności Niewspierane Dobrze obsługiwane Dobrze obsługiwane
Zakres zagadnień dotyczących pracy
Pojedynczy proces lub projekt Dobrze obsługiwane Supported Supported
Wiele procesów Niewspierane Dobrze obsługiwane Dobrze obsługiwane
Zagadnienia dotyczące sprzętu
Użycie procesora CPU Dobrze obsługiwane Dobrze obsługiwane Dobrze obsługiwane
Użycie procesora GPU Dobrze obsługiwane Dobrze obsługiwane Niewspierane
Użycie pamięci Dobrze obsługiwane Dobrze obsługiwane Dobrze obsługiwane
Dane wejściowe/wyjściowe urządzenia Niewspierane Dobrze obsługiwane Dobrze obsługiwane
Użycie zasilania Niewspierane Dobrze obsługiwane Niewspierane
Uchwyt systemowy Niewspierane Dobrze obsługiwane Dobrze obsługiwane
Zagadnienia dotyczące obsługi języka kodu
Obsługa języka C/C++ Dobrze obsługiwane Dobrze obsługiwane Dobrze obsługiwane
Obsługa platformy .NET Dobrze obsługiwane Dobrze obsługiwane Dobrze obsługiwane
Obsługa języka JavaScript Supported Supported Supported
Zagadnienia dotyczące scenariusza
Śledzenie zdarzeń dla systemu Windows Supported Dobrze obsługiwane Dobrze obsługiwane
Kompozycja Niewspierane Dobrze obsługiwane Niewspierane
HTML/Edge/Internet Explorer/Webview Niewspierane Dobrze obsługiwane Niewspierane
XAML/WinUI Supported Dobrze obsługiwane Dobrze obsługiwane
Przepływy wideo/audio i zakłócenia Niewspierane Dobrze obsługiwane Niewspierane
Chronometraż bazy danych Dobrze obsługiwane Niewspierane Niewspierane
Alokacja zarządzanych obiektów i odzyskiwanie pamięci Dobrze obsługiwane Niewspierane Dobrze obsługiwane
Scenariusze niestandardowe Niewspierane Dobrze obsługiwane Dobrze obsługiwane

Zagadnienia dotyczące ogólnego użycia

W przypadku osób, które dopiero zaczynają pracę z analizą wydajności, zalecamy program Visual Studio Performance Profiler jako dobrze zintegrowaną funkcję w istniejącym pakiecie deweloperów programu Visual Studio. Zalecamy używanie programu Visual Studio Performance Profiler za pośrednictwem narzędzia PerfView, jeśli spełnia Twoje potrzeby.

Aby uzyskać bardziej złożoną analizę wydajności systemu, która może wymagać większej mocy i wszechstronności, zalecamy zestaw narzędzi Windows Performance Toolkit, który składa się z dwóch narzędzi używanych do wykonywania zadań analizy wydajności:

  • Narzędzie Windows Performance Recorder, dostępne zarówno jako narzędzie wiersza polecenia, jak i z interfejsem graficznym, jest odpowiedzialne za przechwytywanie sesji śledzenia.
  • Analizator wydajności systemu Windows zostanie otwarty później, aby po przetworzeniu zebranych danych i udostępnić wysoce dostosowywalny widok analizy.

Oto kilka korzyści oferowanych przez program Visual Studio Performance Profiler:

  • Dobre wprowadzenie do analizy wydajności w głównych domenach.
  • Obsługuje wiele złożoności analizy i debugowania automatycznie na podstawie konfiguracji projektu.
  • Automatycznie wyróżnia główne obszary zainteresowania.
  • Lepiej jest skupić się tylko na jednej aplikacji z mniejszym, bardziej skoncentrowanym zestawem danych i mniejszym zakresem kolekcji.
  • Bardziej szczegółowy nacisk przekłada się na mniejszy wpływ na inne aplikacje i sprzęt maszynowy podczas profilowania, zmniejszenie ogólnego rozmiaru plików śledzenia generowanych i przechowywanych oraz zwiększenie szybkości przetwarzania na potrzeby przeglądania informacji po zakończeniu zbierania.
  • Rozpoczęcie i ukończenie śledzenia trwa krócej, a także szybsze przeglądanie i reakcja, ponieważ program Visual Studio Performance Profiler koncentruje się tylko na aplikacji, a nie na całym systemie.
  • Zbieranie danych i analiza wynikowa są wykonywane w programie Visual Studio, a strony analizy są uruchamiane automatycznie po zakończeniu zbierania. Widok raportu również automatycznie skupia uwagę na punktach aktywnych lub obszarach akcji.

Oto kilka korzyści oferowanych przez zestaw narzędzi Windows Performance Toolkit:

  • Wiele dokumentacji i blogów jest udostępnianych przez zespoły ds. wydajności i diagnostyki systemu Windows, które ułatwiają rozpoczęcie pracy.
  • Lepiej jest zbierać bardzo duże pliki, zwłaszcza z systemów, które są zajęte zadaniami w tle. Jest to wszechstronne narzędzie do zbierania informacji, które następnie będą filtrowane w interfejsie Analizatora wydajności systemu Windows.
  • Możliwość dostosowywania do zaawansowanych scenariuszy analizy wydajności przy użyciu punktów rozszerzalności. (Zobacz poniżej)

Oto kilka korzyści oferowanych przez program PerfView:

  • Kompleksowa wbudowana dokumentacja i instruktażowe filmy wideo dostępne online zintegrowane z aplikacją.
  • Wdrażanie w środowiskach produkcyjnych jest łatwe, po prostu kopiując PerfView.exe.
  • Tryb rejestratora lotów do uchwytywania ciężkich do odtworzenia problemów.
  • Bardzo szczegółowa diagnostyka usług środowiska uruchomieniowego platformy .NET.
  • Rozszerzalny dla widoków niestandardowych.

Zakres zagadnień dotyczących pracy

W przypadku analiz dotyczących pojedynczej aplikacji , a zwłaszcza pojedynczego procesu, wszystkie narzędzia są bardzo zdolne do zbierania i zrozumienia wydajności. Zaletą jest jednak użycie profilera wydajności programu Visual Studio, zwłaszcza gdy źródło aplikacji i system projektu jest już dostępny. Silnik profilera wydajności Visual Studio jest przeznaczony do zbierania informacji o CPU, GPU i pamięci z pliku binarnego w podobnie uproszczony sposób jak możliwość debugowania F5. Chociaż skupia się tylko na jednej aplikacji, ten mechanizm kolekcji oferuje bardziej efektywny czas reakcji i cykl pracy dewelopera.

Wybierz pozycję PerfView, jeśli program Visual Studio nie ma niezbędnych możliwości, nie można go uruchomić ze względu na wymagania dotyczące kolekcji (typowe w środowiskach produkcyjnych) lub wymagane są bardziej szczegółowe możliwości diagnostyczne platformy .NET.

W sytuacjach o większej złożoności , które obejmują wiele żądań między procesami, urządzeń sprzętowych i ich sterowników, lub szczegółowe omówienie technologii platformy Windows, zestaw narzędzi Windows Performance Toolkit jest optymalnym wyborem.

Zagadnienia dotyczące sprzętu

Profiler wydajności programu Visual Studio, Zestaw narzędzi Windows Performance Toolkit i PerfView mogą diagnozować procesor CPU i pamięć dla głównych składników sprzętowych, a program Visual Studio Performance Profiler i zestaw narzędzi Windows Performance Toolkit dodatkowo obsługują procesor GPU. Narzędzia są ogólnie dobrze dopasowane do analizy wprowadzającej w tych obszarach.

Użycie procesora CPU można analizować za pomocą wszystkich trzech narzędzi i jest zwykle przechwytywane przy użyciu próbkowania. Próbkowanie okresowo przechwytuje ślady stosu z aplikacji i udostępnia ranking na temat częstotliwości ich wyświetlania. Oba narzędzia mogą dostosować to zachowanie, aby zamiast tego używać instrumentacji na potrzeby dokładnej księgowości.

Użycie procesora GPU można analizować za pomocą profilera wydajności programu Visual Studio i zestawu narzędzi Windows Performance Toolkit, przechwytując ogólne omówienie informacji.

Użycie pamięci można analizować za pomocą wszystkich trzech narzędzi zbierających informacje o przestrzeni sterty i stosach skojarzonych z alokacjami w stercie.

W przypadku wystąpienia bardziej złożonych scenariuszy, takich jak analizowanie sieci, dysku, urządzeń, dojść lub ogólnego zużycia energii systemu, zestaw narzędzi Windows Performance Toolkit jest bardziej wyposażony w obsługę analizy. Te dane najlepiej zbierać bezpośrednio z systemu operacyjnego, ponieważ wysyła żądania do różnych składników sprzętowych. Zestaw narzędzi Windows Performance Toolkit jest opracowywany razem z systemem operacyjnym, więc jest gotowy i zdolny do zbierania tych bardziej skoncentrowanych na systemie kategorii informacji.

Zagadnienia dotyczące obsługi języka kodu

Zestaw narzędzi Windows Performance Toolkit koncentruje się głównie na obsłudze języków C i C++, ponieważ te języki są używane w bazie kodu systemu operacyjnego Windows.

Obsługa profilera wydajności programu Visual Studio koncentruje się na szerszym zakresie języków programowania, począwszy od technologii pochodzących z platformy .NET, takich jak C# i ASP.NET, a następnie rozszerza się na zewnątrz.

Aplikacja PerfView obsługuje aplikacje platformy .NET i natywne (C i C++). Posiada głęboką wiedzę na temat środowisk uruchomieniowych platformy .NET i możliwości w zakresie obciążeń internetowych ASP.NET.

Nie oznacza to, że program Visual Studio nie może analizować kodu C lub C++ lub że Analizator wydajności systemu Windows nie może analizować aplikacji platformy .NET lub że narzędzie PerfView nie może analizować aplikacji internetowych. Najlepiej jest zacząć od narzędzia, które najlepiej pasuje do analizowanej aplikacji, aby wykorzystać zalety poszczególnych narzędzi.

Zagadnienia dotyczące scenariusza

Wszystkie narzędzia zawierają kilka opcji opartych na scenariuszach na potrzeby badania wydajności aplikacji.

Opcje profilera wydajności programu Visual Studio zwykle koncentrują się na platformie .NET, interfejsie użytkownika i bazach danych znajdujących się w analizowanej aplikacji.

Zestaw narzędzi Windows Performance Toolkit zwykle koncentruje się na składnikach i strukturach systemu operacyjnego, takich jak kompozycja, widoki przeglądarki i usterki w potokach przetwarzania w czasie rzeczywistym.

W przypadku scenariuszy wymagających bardziej dostosowanego rozwiązania program Windows Performance Recorder może łączyć zarówno kolekcję w całym systemie, jak i dane zbierania aplikacji w jedną sesję rejestrowania. Ta funkcja umożliwia deweloperowi aplikacji oferowanie kompletnego rozwiązania do wdrożenia klientom w celu żądania danych wydajności od sprzętu, który może się różnić od tego, który został użyty do opracowania produktu. Więcej informacji na temat tego mechanizmu można znaleźć w serii blogów Tworzenie profilów niestandardowych przez zespół ds. wydajności i diagnostyki systemu Windows.

Narzędzie PerfView jest przeznaczone do głębokich badań aplikacji i środowisk uruchomieniowych platformy .NET, ale jest tak samo możliwe w badaniach wieloprocesowych i na poziomie systemu operacyjnego.

Podsumowanie

Profiler wydajności programu Visual Studio, Windows Performance Toolkit i PerfView to trzy niezawodne narzędzia firmy Microsoft, które umożliwiają zrozumienie wydajności aplikacji. Wybranie narzędzia najlepiej spełniającego Twoje potrzeby wymaga różnych zagadnień dotyczących konkretnej sytuacji. Mamy nadzieję, że ten przewodnik zawiera informacje potrzebne do dokonania mądrych wyborów analizy wydajności, ale także zapraszamy do złożenia opinii na tej stronie poniżej lub w przypadku problemów związanych z wydajnością programowania w systemie Windows, zgłoś problem w repozytorium Windows Dev Performance.