Xamarin Profiler

Ten przewodnik zawiera informacje o kluczowych funkcjach Xamarin Profiler. Przyjrzyjmy się profilowaniom, profilowaniu i ich użyciu oraz standardowej przepływowi pracy służącej do profilowania aplikacji platformy Xamarin.

Powodzenie aplikacji zależy od doświadczenia użytkownika końcowego. Jako deweloper możesz zaimplementować w swojej aplikacji naprawdę wspaniałe funkcje, ale jeśli aplikacja jest powolna lub pełna awarii, użytkownik prawdopodobnie ją pozbędzie.

W przeszłości mono oferuje zaawansowany profiler wiersza polecenia do zbierania informacji o programach uruchomionych w programie środowisko uruchomieniowe Mono o nazwie Profiler dziennika Mono. Interfejs Xamarin Profiler graficzny dla profilera dzienników Mono i obsługuje profilowanie aplikacji dla systemów Android, iOS, tvOS i Mac na komputerach Mac oraz w aplikacjach dla systemów Android, iOS i tvOS na komputerach Windows.

W Xamarin Profiler dostępnych jest wiele narzędzi do profilowania — alokacje, cykle i profiler czasu. W tym przewodniku opisano, co te narzędzia mierzą i jak analizują aplikację, oraz wyjaśniono znaczenie danych przedstawionych na poszczególnych ekranach.

W tym przewodniku przeanalizowano typowe scenariusze profilowania i wprowadzono profiler jako narzędzie, które pomaga analizować i optymalizować aplikacje dla systemów iOS i Android.

Pobieranie i instalowanie

Uwaga

Aby odblokować tę funkcję na komputerze Mac, Visual Studio Enterprise być subskrybentem Visual Studio Enterprise na Windows lub Visual Studio dla komputerów Mac mac.

Aplikacja Xamarin Profiler jest aplikacją autonomiczną i jest zintegrowana z Visual Studio dla komputerów Mac i Visual Studio w celu umożliwienia profilowania z poziomu środowiska IDE.

Pobierz pakiet instalacji dla swojej platformy:

Po pobraniu uruchom instalatora, aby dodać Xamarin Profiler do systemu.

Profileery i profilowanie

Profilowanie to ważny i często pomijany krok podczas tworzenia aplikacji. Profilowanie jest formą dynamicznej analizy programu — analizuje program, gdy jest uruchomiony i jest w użyciu. Profiler to narzędzie wyszukiwania danych, które zbiera informacje o złożoności czasu, użyciu określonych metod i przydzielonej pamięci. Profiler umożliwia przechodzenie do szczegółów i analizowanie tych metryk w celu wytyczania obszarów problemów w kodzie.

Podczas projektowania i opracowywania aplikacji ważne jest, aby nie optymalizować przedwcześnie; oznacza to, że poświęcanie czasu na opracowywanie kodu w obszarach, do których rzadko uzyskuje się dostęp. Jest to moc profilowania. Profiler zapewnia wgląd w najczęściej używane części bazy kodu i ułatwia lokalizowanie obszarów, w których należy poświęcić czas na ulepszenia. Deweloperzy powinni zadbać o zrozumienie, gdzie większość czasu jest spędzana w aplikacji i jak pamięć jest używana przez aplikację.

Profilowanie jest przydatne we wszystkich typach rozwoju, ale jest szczególnie istotne w przypadku opracowywania aplikacji mobilnych. Niezoptymalizowany kod jest znacznie bardziej zauważalny na platformach mobilnych niż na komputerach stacjonarnych, a powodzenie aplikacji zależy od pięknego i zoptymalizowanego kodu, który działa wydajnie.

Xamarin Profiler

Ten Xamarin Profiler umożliwia deweloperom profilowanie aplikacji z Visual Studio dla komputerów Mac lub Visual Studio. Profiler zbiera i wyświetla informacje o aplikacji, które następnie mogą być używane przez dewelopera do analizowania zachowania aplikacji. Istnieje wiele różnych sposobów profilowania aplikacji za pomocą Xamarin Profiler, czyli profilowanie pamięci i próbkowanie statystyczne. Są one realizowane za pomocą odpowiednio instrumentów Alokacje i Profiler czasu.

Obecnie można Xamarin Profiler do testowania aplikacji Xamarin.iOS, Xamarin.Android i Xamarin.Mac na komputerach Mac (za pośrednictwem Visual Studio dla komputerów Mac). Profiler jest oddzielnym procesem od środowiska IDE, dlatego oprócz uruchamiania z programu Visual Studio dla komputerów Mac może służyć jako aplikacja autonomiczna do badania plików .exe i plików, które zostały wykonane z profilera dziennika .mlpd mono.

Obsługa profilera

Obsługa Xamarin Profiler jest dostępna na następujących platformach:

  • Visual Studio dla komputerów Mac (macOS, z licencją Enterprise)

    • Android
      • Urządzenie i Emulator
    • iOS
      • Urządzenie i symulator
    • tvOS (instrument czasu nie jest obsługiwany)
      • Urządzenie i symulator
    • Mac
  • Visual Studio (tylko Enterprise wersji)

    • Android
      • Urządzenie i Emulator
    • iOS [eksperymentalne]
      • Urządzenie i symulator
    • tvOS
      • Urządzenie i symulator

Należy pamiętać, że można profilować tylko konfiguracje debugowania.

Profiler — podstawy

Ta sekcja zawiera wprowadzenie do części Xamarin Profiler i ujednanie jej cech.

Zezwalaj na profilowanie w aplikacji

Zanim będzie można pomyślnie profilować aplikację, należy zezwolić na profilowanie w jej opcjach Project aplikacji.

  • iOS:

Tworzenie > debugowania w systemie iOS > profilowanie

Okno dialogowe Opcje systemu iOS w Visual Studio dla komputerów Mac.

  • Android:

Kompilowanie > debugowania w > Android włączyć instrumentację dewelopera

Okno dialogowe Opcje systemu Android w Visual Studio dla komputerów Mac.

Uruchamianie profilera

Aplikację Xamarin Profiler można uruchomić ze środowiska IDE podczas profilowania aplikacji systemu iOS lub Android albo jako aplikacja autonomiczna.

Uruchamianie z Visual Studio dla komputerów Mac

  1. Najpierw upewnij się, że aplikacja jest załadowana do Visual Studio dla komputerów Mac, a następnie wybierz (domyślną) konfigurację Debugowanie.
  2. Przejdź do > Uruchom profilowanie w programie Visual Studio dla komputerów Mac lub Analizuj > Xamarin Profiler w programie Visual Studio, aby otworzyć profiler, jak pokazano na poniższym diagramie:

Uruchamianie profilera z Visual Studio dla komputerów Mac.

Jeśli elementy menu nie są wyświetlane, zapoznaj się z przewodnikiem rozwiązywania problemów.

Spowoduje to uruchomienie profilera i automatyczne rozpoczęcie profilowania aplikacji.

Profiler może służyć do mierzenia pamięci i wydajności. Osiąga to za pomocą narzędzi Allocations (Alokacje) i Time Profiler (Profiler czasu), które zostaną szczegółowo opisane w następnej sekcji.

Zapisywanie i ładowanie sesji profilera

Aby zapisać sesję profilowania w dowolnym momencie, wybierz pozycję Plik > Zapisz jako... na pasku menu profilera. Plik jest zapisywany w formacie mlpd, specjalnym, wysoce skompresowanym formacie do profilowania danych.

Po zainstalowaniu pliku można Xamarin Profiler w folderze Aplikacje, jak pokazano na poniższym zrzucie ekranu:

Otwórz autonomiczny profiler z komputera Mac.

Pliki mlpd można załadować do profilera, otwierając aplikację autonomiczną, wybierając pozycję Wybierz element docelowy i ładując plik.

Aby uzyskać więcej informacji, zobacz Generowanie plików mlpd.

Funkcje profilera

Sekcja Xamarin Profiler składa się z pięciu sekcji, jak pokazano poniżej:

  • Pasek narzędzi — w górnej części profilera dostępne są opcje uruchamiania/zatrzymywania profilowania, wybierania procesu docelowego, wyświetlania czasu działania aplikacji i wybierania widoków podzielonych, które tworzą aplikację profilera.
  • Lista instrumentów — zawiera listę wszystkich instrumentów załadowanych na sesję profilowania.
  • Wykres kreślący — te wykresy odnoszą się w poziomie do odpowiednich instrumentów na liście instrumentów. Aby zmienić skalę, można użyć suwaka (wyświetlanego poniżej profilera czasu).
  • Obszar Szczegóły instrumentów — zawiera dane wyświetlane przez wybrany widok bieżącego instrumentu. Przyjrzymy się tym widokom bardziej szczegółowo w poniższej sekcji.
  • Widok inspektora — zawiera sekcje, które można wybrać za pomocą kontrolki segmentowej. Sekcje są zależne od wybranego instrumentu i obejmują: ustawienia Ustawienia, statystyki, informacje o śladach stosu i ścieżkę do katalogów głównych.

Alokacji

Instrument alokacji zawiera szczegółowe informacje o obiektach w aplikacji podczas ich tworzenia i odśmiecania pamięci.

W górnej części profilera znajduje się wykres alokacji, który przedstawia ilość pamięci przydzielonej w regularnych odstępach czasu podczas profilowania. Obecnie wykres alokacji to łączna liczba alokacji, a NIE rozmiar sterty w tym momencie. W pewnym sensie nigdy nie zejdzie w dół, tylko zwiększy się. Obejmuje to obiekty przydzielone na stosie. W zależności od używanej wersji środowiska uruchomieniowego wykres może wyglądać inaczej — nawet dla tej samej aplikacji.

W instrumentze Alokacje istnieją różne widoki danych, które umożliwiają deweloperom analizowanie, w jaki sposób ich aplikacja używa i co pozwala na wolne pamięci. Te widoki są opisane poniżej:

  • Alokacje — wyświetla listę wszystkich alokacji i grupuje je według nazwy klasy. Zapewnia to doskonały przegląd używanych klas i metod, ich często używaną wielkość oraz zbiorczy rozmiar używanych klas. Dwukrotne kliknięcie klasy spowoduje pokazanie przydzielonej pamięci:

Widok Inspector (Inspektor) dla alokacji zawiera opcje filtrowania i grupowania obiektów, dostarczając statystyki dotyczące przydzielonej pamięci oraz najważniejsze alokacje, a także widoki śledzenia stosu i ścieżki do katalogu głównego.

  • Drzewo wywołań — wyświetla całe drzewo wywołań wszystkich wątków w aplikacji i zawiera informacje o pamięci przydzielonej w każdym węźle. Po wybraniu elementu na liście wszystkie węzły równorzędne będą wyświetlane jako szare. Możesz rozwinąć drzewo lub kliknąć dwukrotnie element , aby przejść do jego szczegółów. Podczas wyświetlania tego widoku danych można użyć widoku inspektora ustawień wyświetlania, aby zmienić sposób jego wyświetlania. Obecnie dostępne są dwie opcje:
    1. Odwrócone drzewo wywołań — uwzględnia ślad stosu od góry do dołu. Jest to wygodna opcja widoku, ponieważ wskazuje najgłębsze metody, w których procesor spędzał czas.
    2. Oddzielone według wątku — ta opcja organizuje drzewo wywołań według wątku.
  • Migawki — w tym okienku są wyświetlane informacje o migawkach pamięci. Aby wygenerować je podczas profilowania aplikacji na żywo, kliknij przycisk Aparat na pasku narzędzi w każdym punkcie, w którym chcesz zobaczyć, jaka pamięć jest zachowywana i zwalniana. Następnie możesz kliknąć każdą migawkę, aby sprawdzić, co dzieje się pod maską. Pamiętaj, że migawki mogą być wykonane tylko podczas profilowania na żywo aplikacji.

Profiler czasu

Instrument profilera czasu mierzy dokładnie, ile czasu jest spędzanych w każdej metodzie aplikacji. Aplikacja jest wstrzymana w regularnych odstępach czasu, a ślad stosu jest uruchamiany w każdym aktywnym wątku. Każdy wiersz w obszarze Szczegóły instrumentów pokazuje ścieżkę wykonywania, która została obserwowana.

Wykres kreślący, jak pokazano na poniższym zrzucie ekranu, przedstawia liczbę próbek odebranych przez aplikację podczas jej pracy:

  • Drzewo wywołań — pokazuje ilość czasu spędzonego w każdej metodzie:

Cykli

Dzięki użyciu kodu zarządzanego w językach C# i F# można dość często i niestety dość łatwo tworzyć odwołania do obiektów, które nigdy nie zostaną usunięte. Ten instrument umożliwia wskazać te obiekty i wyświetlić cykle, do których odwołuje się aplikacja.

Profilowanie aplikacji

Obecnie można profilować tylko domyślne konfiguracje debugowania.

W przypadku profilowania aplikacji przy użyciu dowolnej innej konfiguracji zostanie wyświetlone następujące okno dialogowe komunikatu:

Wybierz pozycję Aktualizuj, aby kontynuować.

Moduł odśmiecania pamięci SGen i profilowanie

Moduł odśmiecania pamięci SGen jest używany dla wszystkich platform Xamarin.

SGen to generacjowe gc, które przydziela obiekty aplikacji na trzy sterty — dla szkół, sterty majora i dużej przestrzeni obiektów. Umożliwia to przyspieszenie wykonywania wyrzucania elementów bezużytecznych. SGen jest obecnie domyślnym wykazem globalny dla aplikacji Xamarin.Android i Xamarin.iOS Unified.

Aplikacja Xamarin.iOS korzystająca klasyczny interfejs API odśmiecania pamięci boehm — zachowawczego, nienależytego modułu odśmiecania pamięci. Ze względu na to, że jest on zachowawczy, jest mniej prawdopodobne, że wolne będzie dostępnej pamięci, co może prowadzić do niedokładnych wyników podczas korzystania z profilera. Z tego powodu nie można używać instrument alokacji z modułem odśmiecania pamięci Boehm.

Jeśli aplikacja korzysta z funkcji Boehm GC, zostanie wyświetlone okno dialogowe komunikatu, ale program Xamarin nie zaleca przełączania istniejącej aplikacji systemu iOS, która używa funkcji Boehm do SGen, bez starannych badań i dokładnych testów. W przypadku platformy Xamarin nie zaleca się również przełączania do usługi SGen w celu profilowania, a następnie przełączania się z powrotem, ponieważ te wyniki nie zapewniają dokładnych testów porównawczych użycia pamięci.

Aby uzyskać więcej informacji na temat zarządzania pamięcią, zapoznaj się z przewodnikiem Najlepsze rozwiązania dotyczące pamięci i wydajności.

Podsumowanie

W tym przewodniku przyjrzeliśmy się, czym jest profilowanie i jak jest korzystne dla dewelopera. Następnie wprowadziliśmy ten Xamarin Profiler, dostarczając trochę historii i informacji na temat sposobu jej działania. Na koniec poznaliśmy funkcje tej Xamarin Profiler oraz instrumentami alokacji i profilera czasu.