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.
- Analiza przypadku: Przewodnik dla początkujących dotyczący optymalizowania kodu
- Analiza przypadku: Izolowanie problemu z wydajnością
- Zwiększanie wydajności programu Visual Studio za pomocą nowego narzędzia instrumentacji
- Analiza przypadku: podwójna wydajność w czasie poniżej 30 minut