Instrumentacja aplikacji .NET w programie Visual Studio (C#, C++, Visual Basic, F#)

Wraz z wydaniem programu Visual Studio 2022 w wersji 17.5 możesz użyć nowego dynamicznego narzędzia instrumentacji. To narzędzie pokazuje dokładną liczbę wywołań funkcji i jest szybsze niż poprzednia wersja narzędzia Instrumentacja. To narzędzie obsługuje instrumentację platformy .NET Core bez konieczności używania plików PDB. Począwszy od programu Visual Studio 2022 w wersji 17.6 (wersja zapoznawcza 2), narzędzie obsługuje również język C/C++.

Narzędzie jest podobne do narzędzia Użycie procesora CPU, z wyjątkiem czasu zegara ściany zamiast wykorzystania procesora CPU. Oznacza to, że czas zablokowany, taki jak czas spędzony na oczekiwaniu na blokady, pojawi się w śladzie instrumentacji, w przeciwieństwie do narzędzia Użycie procesora CPU. Aby uzyskać dodatkowe informacje na temat efektywnego korzystania z narzędzia Instrumentacja, zobacz Instrumentation Overview (Omówienie instrumentacji) i Improving Visual Studio performance with the new Instrumentation Tool (Omówienie instrumentacji) i Improving Visual Studio performance with the new Instrumentation Tool (Poprawianie wydajności programu Visual Studio za pomocą nowego narzędzia Instrumentacja).

Instrumentacja aplikacji

  1. Wybierz pozycję Alt+F2 (lub Debuguj > profiler wydajności), aby otworzyć profilera wydajności w programie Visual Studio.

  2. Zaznacz pole wyboru Instrumentacja.

    Zrzut ekranu przedstawiający wybrane narzędzie instrumentacji.

    Jeśli włączysz opcję Rozpocznij od kolekcji wstrzymanej przed uruchomieniem profilera, dane nie będą zbierane do momentu wybrania przycisku Rekord w widoku sesji diagnostycznej.

    Uwaga

    Jeśli narzędzie nie jest dostępne do zaznaczenia, wyczyść pole wyboru każdego innego narzędzia, ponieważ niektóre narzędzia muszą działać samodzielnie. Aby dowiedzieć się więcej na temat uruchamiania narzędzi razem, zobacz Używanie wielu narzędzi profilera jednocześnie.

    Jeśli narzędzie nadal nie jest dostępne, sprawdź, czy projekt spełnia powyższe wymagania. Upewnij się, że projekt jest w trybie wydania, aby przechwycić najdokładniejsze dane.

  3. Wybierz przycisk Start, aby uruchomić narzędzie.

  4. Wybierz elementy w programie do instrumentowania.

    Zrzut ekranu przedstawiający okno dialogowe Wybieranie elementów do instrumentowania.

    Począwszy od programu Visual Studio 2022 w wersji 17.11 (wersja zapoznawcza 1), profiler utrwala wybrane elementy na potrzeby następnego przebiegu profilowania.

  5. Wybierz przycisk OK.

  6. Po uruchomieniu narzędzia przejdź do scenariusza, który chcesz profilować w aplikacji. Następnie wybierz pozycję Zatrzymaj zbieranie lub zamknij aplikację, aby wyświetlić dane.

Analizowanie raportu instrumentacji

Dane profilowania są wyświetlane w programie Visual Studio.

Zrzut ekranu przedstawiający dane instrumentacji platformy .NET.

Widok danych instrumentacji przedstawia listę funkcji uporządkowanych przez najdłuższe działanie, z najdłuższą funkcją działającą u góry w obszarze Top Functions. Sekcja Ścieżka gorąca zawiera stos wywołań dla funkcji, które korzystają z jak największego czasu. Te listy mogą pomóc w prowadzeniu funkcji, w których występują wąskie gardła wydajności.

Kliknij funkcję, którą cię interesujesz, i zobaczysz bardziej szczegółowy widok.

Dostępne dane są podobne do narzędzia Użycie procesora CPU, z tą różnicą, że są oparte na zegarze ściennym i liczba wywołań zamiast wykorzystania procesora CPU.

Analizowanie szczegółowych informacji

Jeśli jakiekolwiek szczegółowe informacje są wyświetlane w sekcji Najważniejsze szczegółowe informacje, użyj podanego linku, aby uzyskać więcej informacji na temat zidentyfikowanego problemu. Aby uzyskać więcej informacji, zobacz Szczegółowe informacje o procesorze CPU, ale należy pamiętać, że informacje dotyczące narzędzia Instrumentacja są specyficzne dla czasu zegara ściany, a nie wykorzystania procesora CPU.

Ponadto, jeśli używasz copilot, użyj przycisku Zapytaj copilot, aby otworzyć okno czatu Copilot , a Copilot udostępni sugestie na podstawie badania kodu i zidentyfikowanych problemów.

Analizowanie szczegółowych raportów instrumentacji

Aby przeanalizować raport instrumentacji, kliknij pozycję Otwórz szczegóły lub kliknij jedną z najważniejszych funkcji, aby otworzyć widok funkcji .

Raport zawiera różne widoki danych diagnostycznych:

  • Obiekt wywołujący/wywoływany
  • Drzewo wywołań
  • Moduły
  • Funkcje
  • Wykres płomienia

We wszystkich widokach z wyjątkiem obiektu wywołującego/wywoływanego raport diagnostyczny jest sortowany według wartości Total [unit, %], od najwyższego do najniższego. Zmień kolejność sortowania lub kolumnę sortowania, wybierając nagłówki kolumn. Możesz kliknąć dwukrotnie funkcję, którą cię interesuje, i zobaczysz źródło funkcji, a także wyróżnienie, które pokazuje, gdzie jest spędzany czas w tej funkcji. W tabeli przedstawiono kolumny z danymi, takimi jak czas spędzony w funkcji, w tym nazywane funkcjami (Total), a druga kolumna przedstawiająca czas spędzony w funkcji, z wyłączeniem nazywanych funkcjami (Self).

Te dane mogą pomóc w ocenie, czy sama funkcja jest wąskim gardłem wydajności. Określ ilość danych wyświetlanych przez metodę, aby sprawdzić, czy biblioteki kodu lub środowiska uruchomieniowego innej firmy są przyczyną spowolnienia punktów końcowych lub dużego zużycia zasobów.

Aby uzyskać więcej informacji na temat używania grafu Płomienia, zobacz Identyfikowanie ścieżek gorących za pomocą grafu płomieni.

Drzewo wywołań instrumentacji

Aby wyświetlić drzewo wywołań, wybierz węzeł nadrzędny w raporcie. Domyślnie strona Instrumentacja zostanie otwarta w widoku Wywołujący/Wywoływany . Na liście rozwijanej Bieżący widok wybierz pozycję Drzewo wywołań. Widok drzewa wywołań może pomóc w szybkim zidentyfikowaniu wąskich gardeł wydajności.

Możesz kliknąć przyciski Rozwiń ścieżkę gorącą i Pokaż ścieżkę gorącą , aby wyświetlić wywołania funkcji, które używają największej godziny zegara ściany w widoku drzewa wywołań.

Zrzut ekranu przedstawiający strukturę drzewa wywołań.

Oto więcej informacji na temat wartości kolumn:

  • Suma wskazuje, ile czasu spędziliśmy w funkcji i jakiekolwiek funkcje wywoływane przez nią. Wysokie wartości Całkowite wskazują funkcje, które zużywają najwięcej czasu zegara.

  • Samozwańczy wskazuje, ile czasu spędziliśmy w treści funkcji, z wyłączeniem czasu spędzonego w dowolnych funkcjach, które zostały przez nią wywołane. Wysokie wartości samodzielne mogą wskazywać wąskie gardło wydajności w obrębie samej funkcji.

  • Liczba wywołań wskazuje liczbę wywołań funkcji.

  • Module Nazwa modułu zawierającego funkcję.