Najpierw przyjrzyj się narzędziom profilowania (C#, Visual Basic, C++, F#)

Narzędzia do pomiaru wydajności aplikacji są niezbędne dla deweloperów, którzy chcą zoptymalizować swój kod i zwiększyć wydajność aplikacji. Program Visual Studio oferuje szereg narzędzi profilowania i diagnostyki, które mogą pomóc w diagnozowaniu użycia pamięci i procesora CPU oraz innych problemów na poziomie aplikacji. Za pomocą tych narzędzi można zbierać dane dotyczące wydajności podczas korzystania z aplikacji. Profiler może pomóc w szybkim podejmowaniu świadomych decyzji, udostępniając wizualny obraz czasu wykonywania i użycie procesora CPU dla aplikacji. W tym artykule przedstawiono najpopularniejsze narzędzia profilowania.

Aby uzyskać pomoc dotyczącą wybierania odpowiedniego narzędzia lub wyświetlić obsługę narzędzi profilowania dla różnych typów aplikacji, zobacz Którego narzędzia należy użyć?. Aby zapoznać się z samouczkiem przedstawiającym ogólne podejście do optymalizowania kodu przy użyciu narzędzi profilowania, zobacz Przewodnik dla początkujących dotyczący optymalizowania kodu.

Mierzenie wydajności w kompilacjach wydań

Narzędzia w profilerze wydajności mają na celu zapewnienie analizy kompilacji wydania . W profilerze wydajności można zbierać informacje diagnostyczne podczas działania aplikacji, a następnie sprawdzać zebrane informacje po zatrzymaniu aplikacji (analiza pośmiertna).

Otwórz profiler wydajności, wybierając pozycję Debug Performance>Profiler (lub Alt + F2).

Zrzut ekranu przedstawiający profilera wydajności.

Zrzut ekranu przedstawiający profilera wydajności.

Aby uzyskać więcej informacji na temat korzystania z narzędzia użycie procesora CPU lub pamięci w profilerze wydajności w porównaniu z narzędziami zintegrowanymi z debugerem, zobacz Uruchamianie narzędzi profilowania z debugerem lub bez tego debugera.

Narzędzia dostępne w profilerze wydajności obejmują:

Aby wyświetlić obsługę narzędzi profilowania dla różnych typów aplikacji, zobacz Którego narzędzia należy użyć?.

W niektórych scenariuszach okno umożliwia wybranie wielu narzędzi profilowania. Narzędzia, takie jak użycie procesora CPU, mogą dostarczać uzupełniające dane, których można użyć do ułatwienia analizy. Możesz również użyć profilera wiersza polecenia, aby umożliwić scenariusze obejmujące wiele narzędzi profilowania.

Mierzenie wydajności podczas debugowania

Narzędzia profilowania, do których można uzyskać dostęp podczas sesji debugowania, są dostępne w oknie Narzędzia diagnostyczne. Zostanie wyświetlone okno Narzędzia diagnostyczne automatycznie, chyba że zostało wyłączone. Aby wyświetlić okno, kliknij pozycję Debuguj /Windows / Pokaż narzędzia diagnostyczne (lub naciśnij klawisze Ctrl + Alt + F2). Po otwarciu okna możesz wybrać narzędzia, dla których chcesz zbierać dane.

Okno Narzędzia diagnostyczne

Podczas debugowania możesz użyć okna Narzędzia diagnostyczne do analizowania procesora CPU, użycia pamięci, liczników platformy .NET i wyświetlania zdarzeń, które pokazują informacje dotyczące wydajności.

Okno Narzędzia diagnostyczne

Podczas debugowania możesz użyć okna Narzędzia diagnostyczne do analizowania użycia procesora CPU i pamięci oraz wyświetlić zdarzenia pokazujące informacje dotyczące wydajności.

Widok podsumowania narzędzi diagnostycznych

Widok podsumowania narzędzi diagnostycznych

Okno Narzędzia diagnostyczne to typowy sposób profilowania aplikacji, ale w przypadku kompilacji wydania można również przeprowadzić analizę pośmiertną aplikacji. Aby uzyskać więcej informacji na temat różnych podejść, zobacz Run profilowanie tools with or without the debugger (Uruchamianie narzędzi profilowania z debugerem lub bez nich). Aby wyświetlić obsługę narzędzi profilowania dla różnych typów aplikacji, zobacz Którego narzędzia należy użyć?.

Narzędzia dostępne w oknie Narzędzia diagnostyczne lub podczas sesji debugowania obejmują:

Napiwek

Użyj ponownego uruchomienia, aby pominąć stronę uruchamiania i automatycznie uruchomić przy użyciu poprzednich ustawień, naciskając klawisze Alt+F2 lub klikając pozycję Debuguj > profiler wydajności.

Uwaga

System Windows 8 lub nowszy jest wymagany do uruchamiania narzędzi profilowania przy użyciu debugera (okno Narzędzia diagnostyczne).

Analizowanie użycia procesora CPU

Narzędzie Użycie procesora CPU jest dobrym miejscem do rozpoczęcia analizowania wydajności aplikacji. Będzie on zawierać więcej informacji o zasobach procesora CPU używanych przez aplikację. Możesz użyć narzędzia użycia procesora CPU zintegrowanego z debugerem lub narzędzia użycia procesora POśmiertnego.

W przypadku korzystania z narzędzia użycia procesora CPU zintegrowanego z debugerem otwórz okno Narzędzie diagnostyczne (jeśli jest zamknięte, wybierz pozycję Debuguj / Windows / Pokaż narzędzia diagnostyczne). Podczas debugowania otwórz widok Podsumowanie i wybierz pozycję Zarejestruj profil procesora CPU.

Włączanie użycia procesora CPU w narzędziach diagnostycznych

Włączanie użycia procesora CPU w narzędziach diagnostycznych

Jednym ze sposobów użycia narzędzia jest ustawienie dwóch punktów przerwania w kodzie, jeden na początku i jeden na końcu funkcji lub regionu kodu, który chcesz przeanalizować. Sprawdź dane profilowania po wstrzymaniu w drugim punkcie przerwania.

Widok Użycie procesora CPU zawiera listę funkcji uporządkowanych przez najdłuższą pracę, z najdłuższą funkcją działającą u góry w obszarze Top Functions. W sekcji Ścieżka gorąca przedstawiono stos wywołań dla funkcji korzystających z najbardziej procesora CPU. Te listy mogą pomóc w prowadzeniu funkcji, w których występują wąskie gardła wydajności.

Widok użycia procesora CPU narzędzi diagnostycznych

Widok Użycie procesora CPU przedstawia listę funkcji uporządkowanych przez najdłuższą pracę z najdłuższą funkcją działającą u góry. Może to pomóc w prowadzeniu funkcji, w których występują wąskie gardła wydajności.

Widok użycia procesora CPU narzędzi diagnostycznych

Kliknij funkcję, którą cię interesują, i zobaczysz bardziej szczegółowy widok drzewa wywołań z wyróżnioną wybraną funkcją. W tabeli przedstawiono kolumny z danymi, takimi jak czas spędzony w funkcji, w tym nazywane funkcjami (łączny procesor CPU), a druga kolumna przedstawiająca czas spędzony w funkcji, z wyłączeniem nazywanych funkcjami (Procesor własny). Te dane mogą pomóc w ocenie, czy sama funkcja jest wąskim gardłem wydajności.

Napiwek

Profiler programu Visual Studio obsługuje zbieranie i wyświetlanie śladów. Profiler może również wyświetlać ślady zebrane wcześniej przez inne narzędzia, takie jak dotnet-trace. Funkcja Dotnet-trace generuje wyniki próbkowania, a nie instrumentowane ślady. Aby uzyskać więcej informacji, zobacz dotnet-trace.

Obiekt wywołujący narzędzia diagnostyczne wywołuje widok

Kliknij funkcję, którą cię interesuje, i zobaczysz bardziej szczegółowy widok "motyl" z wybraną funkcją w środku okna, funkcją wywołującą po lewej stronie i wywoływanymi funkcjami po prawej stronie. Sekcja Treść funkcji przedstawia łączną ilość czasu (i procent czasu) spędzonego w treści funkcji z wyłączeniem czasu spędzonego w wywoływaniu i wywoływaniu funkcji. Te dane mogą pomóc w ocenie, czy sama funkcja jest wąskim gardłem wydajności.

Obiekt wywołujący narzędzia diagnostyczne wywołuje widok

Analizowanie użycia pamięci

Okno Narzędzia diagnostyczne umożliwia również ocenę użycia pamięci w aplikacji przy użyciu narzędzia Użycie pamięci. Można na przykład przyjrzeć się liczbie i rozmiarowi obiektów na stercie. Możesz użyć narzędzia użycie pamięci zintegrowanego z debugerem lub narzędzia pośmiertnego użycia pamięci w profilerze wydajności.

Deweloperzy platformy .NET mogą wybrać narzędzie alokacji obiektów platformy .NET lub narzędzie użycie pamięci.

  • Narzędzie alokacji obiektów platformy .NET ułatwia identyfikowanie wzorców alokacji i anomalii w kodzie platformy .NET oraz ułatwia identyfikowanie typowych problemów z odzyskiwaniem pamięci. To narzędzie działa tylko jako narzędzie pośmiertne. To narzędzie można uruchomić na maszynach lokalnych lub zdalnych.
  • Narzędzie Użycie pamięci jest przydatne podczas identyfikowania przecieków pamięci, które nie są zwykle powszechne w aplikacjach platformy .NET. Jeśli musisz używać funkcji debugera podczas sprawdzania pamięci, takich jak przechodzenie przez kod, zalecane jest narzędzie debugera zintegrowanego użycia pamięci.

Aby przeanalizować użycie pamięci za pomocą narzędzia Użycie pamięci, należy wykonać co najmniej jedną migawkę pamięci. Często najlepszym sposobem analizowania pamięci jest wykonanie dwóch migawek; pierwszy tuż przed podejrzeniem problemu z pamięcią, a druga migawka bezpośrednio po wystąpieniu podejrzanego problemu z pamięcią. Następnie możesz wyświetlić różnice dwóch migawek i zobaczyć dokładnie, co się zmieniło. Poniższa ilustracja przedstawia tworzenie migawki za pomocą narzędzia zintegrowanego z debugerem.

Tworzenie migawki w narzędziach diagnostycznych

Tworzenie migawki w narzędziach diagnostycznych

Po wybraniu jednego z łączy strzałek otrzymujesz różnicowy widok sterty (czerwona strzałka w górę Zwiększenie użycia pamięci pokazuje rosnącą liczbę obiektów (po lewej) lub rosnący rozmiar sterty (po prawej)). Po kliknięciu prawego linku uzyskasz widok sterty różnicowej uporządkowany przez obiekty, które zwiększyły największy rozmiar sterty. Może to pomóc w określeniu problemów z pamięcią. Na przykład na poniższej ilustracji bajty używane przez ClassHandlersStore obiekty wzrosły o 3492 bajty w drugiej migawce.

Widok różnic sterty narzędzi diagnostycznych

Widok różnic sterty narzędzi diagnostycznych

Jeśli klikniesz link po lewej stronie w widoku Użycie pamięci, widok sterta jest uporządkowany według liczby obiektów. Obiekty określonego typu, które zwiększyły największą liczbę, są wyświetlane u góry (posortowane według kolumny Różnice liczb).

Oprzyrządowanie

Narzędzie instrumentacji jest podobne do narzędzia Użycie procesora CPU, z tą różnicą, że zapewnia dokładne liczby wywołań i czas zegara ściany zamiast wykorzystania procesora CPU. Metoda instrumentacji wymaga większego obciążenia niż narzędzie Użycie procesora CPU. To narzędzie jest dostępne w profilerze wydajności. Otwórz profiler wydajności, wybierając pozycję Debug Performance>Profiler (lub Alt + F2). Aby uzyskać więcej informacji, zobacz Instrumentacja.

Zrzut ekranu przedstawiający dane instrumentacji platformy .NET.

Sprawdzanie operacji we/wy pliku

Narzędzie We/Wy plików pomaga zrozumieć, jak można zoptymalizować operacje we/wy plików w celu zwiększenia wydajności aplikacji. Jeśli próbujesz zbadać i zdiagnozować powolne czasy ładowania, nowe narzędzie we/wy pliku może pomóc zrozumieć, jak operacje we/wy wpływają na czas spędzony. To narzędzie jest dostępne w profilerze wydajności. Otwórz profiler wydajności, wybierając pozycję Debug Performance > Profiler (lub Alt + F2).

Narzędzie wyświetla operacje odczytu i zapisu plików w widoku listy z kartami.

Zrzut ekranu przedstawiający zatrzymane narzędzie We/Wy pliku.

Sprawdzanie wydajności przy użyciu narzędzia Perf Wskazówki

Często najprostszym sposobem wyświetlania informacji o wydajności jest użycie wydajności Wskazówki. Za pomocą narzędzia Perf Wskazówki można wyświetlać informacje o wydajności podczas interakcji z kodem. Możesz sprawdzić informacje, takie jak czas trwania zdarzenia (mierzony od momentu ostatniego wstrzymania debugera lub uruchomienia aplikacji). Jeśli na przykład przejdziesz przez kod (F10, F11), narzędzie Perf Wskazówki pokaże czas trwania środowiska uruchomieniowego aplikacji z poprzedniej operacji kroku do bieżącego kroku.

Zrzut ekranu przedstawiający Wskazówki wydajności.

Zrzut ekranu przedstawiający Wskazówki wydajności.

Możesz użyć narzędzia Perf Wskazówki aby sprawdzić, jak długo trwa wykonanie bloku kodu lub jak długo trwa ukończenie pojedynczej funkcji.

Wydajności Wskazówki pokaż te same zdarzenia, które również są wyświetlane w widoku Zdarzenia narzędzi diagnostycznych. W widoku Zdarzenia można wyświetlić różne zdarzenia, które występują podczas debugowania, takie jak ustawienie punktu przerwania lub operacja kroku kodu.

Zrzut ekranu przedstawiający widok Zdarzenia narzędzi diagnostycznych.

Zrzut ekranu przedstawiający widok Zdarzenia narzędzi diagnostycznych.

Uwaga

Jeśli masz program Visual Studio Enterprise, możesz również wyświetlić zdarzenia IntelliTrace na tej karcie.

Analizowanie kodu asynchronicznego (.NET)

Narzędzie .NET Async umożliwia analizowanie wydajności kodu asynchronicznego w aplikacji. To narzędzie jest dostępne w profilerze wydajności. Otwórz profiler wydajności, wybierając pozycję Debug Performance>Profiler (lub Alt + F2).

Narzędzie wyświetla każdą operację asynchroniową w widoku listy. Możesz wyświetlić informacje, takie jak czas rozpoczęcia, czas zakończenia i całkowity czas dla operacji asynchronicznych.

Zatrzymano narzędzie asynchroniczne platformy .NET

Analizowanie kodu asynchronicznego (.NET)

Narzędzie .NET Async umożliwia analizowanie wydajności kodu asynchronicznego w aplikacji. To narzędzie jest dostępne w profilerze wydajności. Otwórz profiler wydajności, wybierając pozycję Debug Performance>Profiler (lub Alt + F2).

Narzędzie wyświetla każdą operację asynchroniową w widoku listy. Możesz wyświetlić informacje, takie jak czas rozpoczęcia, czas zakończenia i całkowity czas dla operacji asynchronicznych.

Zatrzymano narzędzie asynchroniczne platformy .NET

Sprawdzanie zdarzeń aplikacji

Podgląd zdarzeń ogólnych umożliwia wyświetlanie aktywności aplikacji za pomocą listy zdarzeń, takich jak ładowanie modułu, uruchamianie wątków i konfiguracje systemu, co pomaga lepiej zdiagnozować działanie aplikacji bezpośrednio w profilerze programu Visual Studio. To narzędzie jest dostępne w profilerze wydajności. Otwórz profiler wydajności, wybierając pozycję Debug Performance>Profiler (lub Alt + F2).

Narzędzie wyświetla każde zdarzenie w widoku listy. Kolumny zawierają informacje o każdym zdarzeniu, takie jak nazwa zdarzenia, sygnatura czasowa i identyfikator procesu.

śledzenie Podgląd zdarzeń

Analizowanie wydajności bazy danych (.NET Core)

W przypadku aplikacji platformy .NET Core korzystających z platformy ADO.NET lub Entity Framework Core narzędzie bazy danych umożliwia rejestrowanie zapytań bazy danych, które aplikacja wykonuje podczas sesji diagnostycznej. Następnie możesz analizować informacje o poszczególnych zapytaniach, aby znaleźć miejsca, w których można poprawić wydajność aplikacji. To narzędzie jest dostępne w profilerze wydajności. Otwórz profiler wydajności, wybierając pozycję Debug Performance>Profiler (lub Alt + F2).

Narzędzie wyświetla każde zapytanie w widoku listy. Możesz wyświetlić informacje, takie jak czas rozpoczęcia i czas trwania zapytania.

Alokacja

Wizualizowanie liczników platformy .NET (.NET Core)

Począwszy od programu Visual Studio 2019 w wersji 16.7, możesz użyć narzędzia Liczniki platformy .NET w programie Visual Studio, aby wizualizować liczniki wydajności. Możesz wizualizować liczniki utworzone przy użyciu liczników dotnet. liczniki dotnet obsługują wiele liczników, takich jak użycie procesora CPU i rozmiar sterty modułu odśmieceń pamięci.

Narzędzie wyświetla wartości na żywo dla każdego licznika w widoku listy.

Zbieranie narzędzi licznika platformy .NET.

Analizowanie zużycia zasobów (XAML)

W aplikacjach XAML, takich jak aplikacje klasyczne systemu Windows WPF i aplikacje platformy UWP, można analizować użycie zasobów przy użyciu narzędzia Oś czasu aplikacji. Możesz na przykład przeanalizować czas spędzony przez aplikację przygotowującą ramki interfejsu użytkownika (układ i renderowanie), obsługę żądań sieci i dysków oraz w scenariuszach, takich jak uruchamianie aplikacji, ładowanie strony i zmiana rozmiaru okna. Aby użyć narzędzia, wybierz pozycję Oś czasu aplikacji w profilerze wydajności, a następnie wybierz pozycję Uruchom. W aplikacji zapoznaj się ze scenariuszem z podejrzanym problemem z użyciem zasobów, a następnie wybierz pozycję Zatrzymaj zbieranie , aby wygenerować raport.

Niska szybkość klatek na wykresie Przepływność wizualizacji może odpowiadać problemom wizualnym widocznym podczas uruchamiania aplikacji. Podobnie wysokie liczby na wykresie wykorzystania wątków interfejsu użytkownika mogą również odpowiadać problemom z odpowiedzią interfejsu użytkownika. W raporcie możesz wybrać okres z podejrzeniem problemu z wydajnością, a następnie sprawdzić szczegółowe działania wątku interfejsu użytkownika w widoku Szczegóły osi czasu (dolne okienko).

Narzędzie profilowania osi czasu aplikacji

Narzędzie profilowania osi czasu aplikacji

W widoku Szczegółów osi czasu można znaleźć informacje, takie jak typ działania (lub zaangażowany element interfejsu użytkownika) wraz z czasem trwania działania. Na przykład na ilustracji zdarzenie Układu dla kontrolki Grid przyjmuje 57,53 ms.

Aby uzyskać więcej informacji, zobacz Oś czasu aplikacji.

Sprawdzanie wydajności interfejsu użytkownika i zdarzeń ułatwień dostępu (UWP)

W aplikacjach platformy UNIWERSALNEJ systemu Windows możesz włączyć analizę interfejsu użytkownika w oknie Narzędzia diagnostyczne. Narzędzie wyszukuje typowe problemy z wydajnością lub ułatwieniami dostępu i wyświetla je w widoku Zdarzenia podczas debugowania. Opisy zdarzeń zawierają informacje, które mogą pomóc w rozwiązywaniu problemów.

Wyświetlanie zdarzeń analizy interfejsu użytkownika w narzędziach diagnostycznych

Wyświetlanie zdarzeń analizy interfejsu użytkownika w narzędziach diagnostycznych

Analizowanie użycia procesora GPU (Direct3D)

W aplikacjach Direct3D (składniki Direct3D muszą znajdować się w języku C++), możesz sprawdzić aktywność na procesorze GPU i analizować problemy z wydajnością. Aby uzyskać więcej informacji, zobacz Użycie procesora GPU. Aby użyć narzędzia, wybierz pozycję Użycie procesora GPU w profilerze wydajności, a następnie wybierz pozycję Uruchom. W aplikacji zapoznaj się ze scenariuszem, który cię interesuje profilowaniem, a następnie wybierz pozycję Zatrzymaj zbieranie , aby wygenerować raport.

Po wybraniu okresu na wykresach i wybraniu szczegółów widoku zostanie wyświetlony szczegółowy widok w dolnym okienku. W widoku szczegółowym możesz sprawdzić, ile aktywności dzieje się na każdym procesorze CPU i procesorze GPU. Wybierz zdarzenia w najniższym okienku, aby uzyskać wyskakujące okienka na osi czasu. Na przykład wybierz zdarzenie Prezent , aby wyświetlić wyskakujące okienka Wywołania prezentu . (Jasnoszary pionowy wiersze VSync można użyć jako odwołania, aby zrozumieć, czy niektóre Prezentowanie nieodebranych wywołań VSync. Aby aplikacja stale osiągała 60 KLATEK NA SEKUNDĘ, musi istnieć jedno wywołanie między co dwiema operacjami VSync).

Narzędzie profilowania użycia procesora GPU

Narzędzie profilowania użycia procesora GPU

Możesz również użyć wykresów, aby określić, czy istnieją wąskie gardła wydajności związane z procesorem CPU, czy związane z procesorem GPU.

Analizowanie wydajności (starsze narzędzia)

W programie Visual Studio 2019 starsze narzędzia eksploratora wydajności i powiązanych narzędzi profilowania, takich jak Kreator wydajności, zostały złożone do profilera wydajności, który można otworzyć przy użyciu profilera wydajności debugowania>. W profilerze wydajności dostępne narzędzia diagnostyczne zależą od wybranego celu i bieżącego otwartego projektu startowego. Narzędzie Użycie procesora CPU zapewnia możliwości próbkowania obsługiwane wcześniej w Kreatorze wydajności. Narzędzie Instrumentacja zapewnia instrumentowaną możliwość profilowania (w przypadku dokładnych liczników wywołań i czasów trwania), które znajdowały się w Kreatorze wydajności. Dodatkowe narzędzia pamięci są również wyświetlane w profilerze wydajności.

Narzędzie Eksplorator wydajności