Udostępnij przez


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 and Case study: Isolate a performance issue (Omówienie instrumentacji i analiza przypadku: izolowanie problemu z wydajnością).

Instrumentacja aplikacji

  1. W projekcie programu Visual Studio ustaw konfigurację rozwiązania na Release (Wydanie ) i wybierz element docelowy wdrożenia.

    Cel wdrożenia zazwyczaj odpowiada nazwie projektu wskazującego wdrożenie lokalne.

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

  3. 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 / Notatka

    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.

    W przypadku niektórych typów projektów, takich jak CMake, należy ustawić element docelowy uruchamiania na Wykonywalny. Aby uzyskać więcej informacji, zobacz Jakie narzędzia są obsługiwane dla mojego projektu?.

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

  5. 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, profiler utrwala wybrane elementy na potrzeby następnego przebiegu profilowania.

    Począwszy od programu Visual Studio 2022 w wersji 17.13 (wersja zapoznawcza 1), możesz wybrać elementy do instrumentowania dla języka C++.

  6. Kliknij przycisk OK.

  7. 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.

Uzyskiwanie pomocy dotyczącej sztucznej inteligencji

Jeśli masz copilot, możesz uzyskać pomoc dotyczącą sztucznej inteligencji podczas przeglądania najważniejszych szczegółowych informacji. Copilot udostępnia informacje i szczegółowe informacje związane z zestawem szczegółowych informacji o wydajności. Dzięki aplikacji Copilot możesz również zadawać pytania dotyczące funkcji na zidentyfikowanych ścieżkach gorących w kodzie, co może pomóc w tworzeniu bardziej wydajnego lub ekonomicznego kodu.

Przycisk Zapytaj copilotzrzut ekranu przedstawiający przycisk Zapytaj copilot. Jest wyświetlany nawet wtedy, gdy nie zidentyfikowano żadnych szczegółowych informacji o wydajności. Wybierz pozycję Zapytaj Copilot , aby dowiedzieć się od Copilot i zacząć zadawać pytania.

Analizowanie szczegółowych raportów instrumentacji

Aby uzyskać szczegółową analizę raportu instrumentacji, najpierw otwórz jeden ze szczegółowych widoków raportu:

  1. Kliknij pozycję Otwórz szczegóły na stronie podsumowania raportu lub wybierz jedną z najważniejszych funkcji, aby otworzyć widok funkcji .

    Zrzut ekranu przedstawiający link Otwórz szczegóły.

  2. Z listy Bieżący widok możesz wybrać jeden ze szczegółowych widoków raportu.

    Zrzut ekranu przedstawiający listę szczegółowych raportów.

Poniższa tabela zawiera opis szczegółowych widoków.

View Description
Obiekt wywołujący/wywoływany Szczegółowy widok czasu spędzonego w określonej funkcji, funkcji, które ją nazwały, oraz funkcji, które wywołuje. Dane wydajności są agregowane dla okresu zbierania danych. Możesz wybrać funkcje wywołujące i wywołać funkcje, aby przejść przez ścieżkę wywołania.
Drzewo wywołań Hierarchiczny widok ścieżki wywołania funkcji. Służy do identyfikowania ścieżek wywołań, które zajmują najwięcej czasu (ścieżka gorąca).
Modules Wyświetlanie czasu spędzonego w poszczególnych modułach zagregowanych w okresie zbierania danych. Służy do identyfikowania modułów, które mogą być wąskimi gardłami wydajności z powodu kombinacji wysokich liczby wywołań i/lub problemów z wydajnością.
Functions Widok czasu spędzonego w poszczególnych funkcjach zagregowanych w okresie zbierania danych. Służy do identyfikowania funkcji, które mogą być wąskimi gardłami wydajności z powodu kombinacji wysokich liczby wywołań i/lub problemów z wydajnością.
Wykres płomienia Hierarchiczny widok ścieżki wywołania funkcji w wizualizacji grafu płomienia. Służy do identyfikowania ścieżek wywołań, które zajmują najwięcej czasu (ścieżka gorąca).

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.

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

Aby uzyskać pomoc w zrozumieniu nieoczekiwanych danych w drzewie wywołań, zobacz Opis drzewa wywołań.

Wywołania asynchroniczne w drzewie wywołań instrumentacji (.NET)

Począwszy od programu Visual Studio 2022 w wersji 17.13 (wersja zapoznawcza 2), widoki reprezentujące zagnieżdżanie drzewa wywołań wizualnych platformy .NET asynchroniczne wywołania w ramach funkcji, w których wykonano wywołanie asynchroniczne, co ułatwia śledzenie przepływu wykonywania w ramach jednego, ujednoliconego śledzenia stosu. Może to pomóc w szybkim zidentyfikowaniu wąskich gardeł wydajności.

Ujednolicony ślad stosu jest wyświetlany w widoku Drzewo wywołań i w sekcji Ścieżka gorąca na stronie Podsumowanie. Węzły asynchroniczne są wyświetlane z deskryptorem [Async Call].

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

Możesz przełączyć wyświetlanie połączonego asynchronicznego stosu wywołań, wybierając pozycję Połącz stosy asynchroniczne z opcji Filtr w widoku Podsumowanie profilera. Ustawienie jest domyślnie włączone.

Zrzut ekranu przedstawiający opcję Stick Async Stacks (Stosy asynchroniczne).