Udostępnij za pośrednictwem


Którego narzędzia wydajności należy użyć? (C#, Visual Basic, C++, F#)

Program Visual Studio udostępnia różne narzędzia profilowania, które ułatwiają diagnozowanie różnych rodzajów problemów z wydajnością aplikacji w zależności od typu aplikacji. W tym artykule przedstawiono informacje ułatwiające znalezienie odpowiedniego narzędzia dla danego scenariusza i typu aplikacji.

Ogólne podejście do optymalizacji kodu przy użyciu narzędzi profilowania znajduje się w temacie Analiza przypadku: Przewodnik dla początkujących dotyczący optymalizowania kodu.

Którego narzędzia należy użyć?

W poniższej tabeli wymieniono różne narzędzia dostępne w programie Visual Studio i przedstawiono typowe scenariusze wyboru narzędzia.

Narzędzie wydajności opis Kiedy używać narzędzia?
Użycie procesora CPU Pokazuje, gdzie procesor spędza czas. • Rozpocznij badanie ogólnych problemów z wydajnością.
• Badanie wysokiego użycia procesora CPU serwera.
• Zbadaj scenariusze metodyki DevOps, takie jak wtedy, gdy zamówienia nie przechodzą do witryny internetowej sklepu detalicznego.
• Optymalizowanie użycia procesora CPU.
• Badanie opóźnienia w wywołaniach interfejsu API.
Wykres płomienia Wyświetl w narzędziu Użycie procesora CPU, które udostępnia alternatywną wizualizację drzewa wywołań. Badanie opóźnienia w wywołaniach interfejsu API
Ścieżka gorąca Wyświetl w narzędziu Użycie procesora CPU, które pokazuje, gdzie większość czasu procesora CPU została spędzone w aplikacji. Badanie opóźnienia w wywołaniach interfejsu API
Użycie pamięci Wyświetla pamięć aplikacji w celu znalezienia problemów, takich jak przecieki pamięci. • Optymalizowanie użycia
pamięci• Badanie zablokowania
interfejsu użytkownika• Badanie podejrzanego przecieku pamięci (kodu natywnego)
Alokacja obiektów platformy .NET Pokazuje, gdzie są przydzielane obiekty platformy .NET i informacje na temat odzyskiwania pamięci. • Optymalizowanie użycia
pamięci platformy .NET• Analizowanie odzyskiwania pamięci
Instrumentacja Pokazuje dokładne liczby wywołań i czasy połączeń. • Potrzebujesz narzędzia, takiego jak użycie procesora CPU, ale potrzebujesz dokładnych liczb wywołań i czasu spędzonego w funkcjach na podstawie czasu zegara ściany.
• Chcesz zobaczyć zablokowany czas, na przykład czas oczekiwania na blokady.
• Uwaga: to narzędzie wymaga dodatkowych obciążeń.
We/Wy pliku Pokazuje operacje we/wy plików oraz czas ich przetwarzania i ilość przetwarzanych danych. Badanie zablokowania interfejsu użytkownika
Wskazówki dotyczące wydajności Przedstawia szybki pomiar informacji o wydajności podczas interakcji z kodem. Podczas debugowania chcesz zobaczyć czas, który upłynął między poprzednią operacją kroku (lub punktem przerwania) do bieżącego kroku lub punktu przerwania.
Podgląd zdarzeń Pokazuje żądania HTTP, komunikaty dziennika i wyjątki. • Badanie opóźnienia wywołań
interfejsu API• Badanie powolnego działania aplikacji na zdalnym serwerze internetowym
Asynchronizuj platformę .NET Pokazuje użycie asynchroniczne/await w aplikacjach platformy .NET. Zbadaj podejrzany problem z wydajnością z kodem asynchronicznym.
Liczniki platformy .NET Raport na żywo dla liczników platformy .NET. • Rozpocznij badanie ogólnych problemów z wydajnością.
• Chcesz śledzić metryki oparte na licznikach platformy .NET, takie jak wyjątki na sekundę, odzyskiwanie pamięci i wykorzystanie procesora CPU.
Baza danych Pokazuje wydajność zapytań bazy danych. Zbadaj wydajność zapytań bazy danych, które używają ADO.NET lub Entity Framework Core.
Użycie procesora GPU Przedstawia ogólne użycie sprzętu aplikacji Direct3D. Sprawdź, czy wydajność aplikacji jest powiązana z procesorem CPU, czy powiązana z procesorem GPU.
Oś czasu aplikacji Pokazuje wydajność interfejsu użytkownika dla aplikacji XAML. Zbadaj wydajność interfejsu użytkownika w aplikacjach XAML, takich jak czas spędzony na ramkach renderowania.
IntelliTrace Narzędzie debugera umożliwiające rejestrowanie zdarzeń i badanie stanu aplikacji w różnych punktach wykonywania. Chcesz, aby narzędzie badało stan aplikacji w różnych punktach, a nie tylko bieżący stan aplikacji.

Które narzędzia są obsługiwane dla mojego projektu?

W poniższej tabeli wymieniono różne narzędzia dostępne w programie Visual Studio oraz różne typy projektów, których można używać z:

Narzędzie wydajności .NET C/C++ Platforma UWP ASP.NET/ASP.NET Core
Użycie procesora CPU tak tak tak tak
Użycie pamięci tak tak tak tak
Alokacja obiektów platformy .NET tak nie tak tak
Instrumentacja tak tak tak tak
We/Wy pliku tak tak tak tak
Wskazówki dotyczące wydajności tak tak tak tak
Podgląd zdarzeń tak tak tak tak
Asynchronizuj platformę .NET tak nie tak tak
Liczniki platformy .NET Tak (tylko platforma.NET Core/5 lub nowsza) nie nie Tak (tylko ASP.NET Core)
Baza danych Tak (tylko platforma.NET Core/5 lub nowsza) nie nie Tak (tylko ASP.NET Core)
Użycie procesora GPU tak tak tak nie
Oś czasu aplikacji Tak (XAML) nie tak nie
Eksplorator wydajności nie nie nie nie
IntelliTrace Tylko platforma .NET z programem Visual Studio Enterprise nie Tylko platforma .NET z programem Visual Studio Enterprise Tylko platforma .NET z programem Visual Studio Enterprise

Które narzędzia są obsługiwane w systemie Linux?

Następujące narzędzia są obsługiwane przez system Linux jako platformę docelową, a także system Windows:

  • Użycie procesora
  • Śledzenie alokacji obiektów platformy .NET
  • .NET Async
  • Liczniki .NET
  • Podgląd zdarzeń
  • baza danych

Dowiedz się, jak używać profilatorów

Poniższe artykuły i wpisy w blogu zawierają więcej informacji, aby ułatwić efektywne korzystanie z narzędzi do wydajności programu Visual Studio.