Udostępnij przez


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.

Aby zapoznać się z ogólnym podejściem do optymalizacji kodu przy użyciu narzędzi profilowania, zobacz 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 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.
graf płomienia ** Wyświetl w narzędziu Użycie procesora, które dostarcza alternatywną wizualizację drzewa wywołań. Badanie opóźnienia w wywołaniach interfejsu API
gorąca ścieżka Wyświetl w narzędziu Użycie procesora, które pokazuje, gdzie spędzono większość czasu procesora w Twojej 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 .NET Pokazuje, gdzie są przydzielane obiekty platformy .NET oraz informacje na temat zarządzania 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ń.
Liczniki .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ę, zbiór odpadów i wykorzystanie CPU.
BenchmarkDotNet Raport dotyczący testów porównawczych opartych na benchmarkDotNet. • Otrzymuj różne wizualizacje danych zebranych przy użyciu BenchmarkDotNet, takich jak użycie CPU lub alokacje pamięci, w zależności od używanego diagnozatora.
I/O pliku Pokazuje operacje we/wy plików oraz czas ich przetwarzania i ilość przetwarzanych danych. Zbadaj zamrożenie 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 async/await w aplikacjach .NET. Zbadaj podejrzany problem z wydajnością z kodem asynchronicznym.
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.
Harmonogram aplikacji Pokazuje wydajność interfejsu użytkownika dla aplikacji XAML. Zbadaj wydajność interfejsu użytkownika w aplikacjach XAML, takich jak czas spędzony na renderowaniu ramek.
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 .NET tak Nie tak tak
Instrumentacja tak tak tak tak
Liczniki .NET Tak (tylko platforma .NET Core/5 lub nowsza) Nie Nie Tak (tylko ASP.NET Core)
BenchmarkDotNet tak Nie Nie częściowo
I/O 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
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
Harmonogram aplikacji Tak (XAML) Nie tak Nie
Eksplorator wydajności Nie Nie Nie Nie
IntelliTrace Tylko .NET z programem Visual Studio Enterprise Nie Tylko .NET z programem Visual Studio Enterprise Tylko .NET z programem Visual Studio Enterprise

Obsługa projektów CMake jest taka sama jak C++. W przypadku użycia procesora CPU, użycia pamięci, operacji wejścia/wyjścia plików i podglądu zdarzeń można uruchamiać narzędzia profilowania względem projektu startowego. Jednak w przypadku instrumentacji i użycia procesora GPU należy ustawić plik wykonywalny jako element docelowy w profilerze wydajności (Alt + F2), wybierając pozycję Wykonywalny jako projekt startowy.

Obsługa projektów CMake jest taka sama jak C++. Należy jednak ustawić plik wykonywalny jako element docelowy w profilerze wydajności (Alt + F2), wybierając pozycję Wykonywalny jako projekt startowy.

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

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

  • Użycie procesora CPU
  • Śledzenie alokacji obiektów platformy .NET
  • .NET Async
  • Liczniki platformy .NET
  • BenchmarkDotNet
  • 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.