Freigeben über


Xamarin Profiler

In diesem Leitfaden werden die wichtigsten Features von Xamarin Profiler erläutert. Dabei werden Profiler, Profilerstellung und deren Verwendung sowie ein Standardworkflow für die Profilerstellung für Xamarin-Anwendungen untersucht.

Der Erfolg einer Anwendung hängt von der Endbenutzererfahrung ab. Als Entwickler haben Sie vielleicht einige wirklich tolle Features in Ihrer App implementiert, aber wenn die App träge oder voller Abstürze ist, wird der Benutzer sie wahrscheinlich loswerden.

In der Vergangenheit hat Mono einen leistungsstarken Befehlszeilenprofiler zum Sammeln von Informationen zu Programmen, die in der Mono-Runtime ausgeführt werden, mit dem Namen Mono-Protokollprofiler. Der Xamarin Profiler ist eine grafische Benutzeroberfläche für den Mono-Protokollprofiler und unterstützt die Profilerstellung für Android-, iOS-, tvOS- und Mac-Anwendungen unter Mac sowie Android-, iOS- und tvOS-Anwendungen unter Windows.

Der Xamarin Profiler verfügt über eine Reihe von Instrumenten für die Profilerstellung: Zuordnungen, Zyklen und Zeitprofiler. In diesem Leitfaden wird untersucht, was diese Instrumente messen, wie sie Ihre Anwendung analysieren, und die Bedeutung der auf den einzelnen Bildschirmen angezeigten Daten wird erläutert.

In diesem Leitfaden werden allgemeine Profilerstellungsszenarien untersucht und der Profiler als Tool vorgestellt, mit dem iOS- und Android-Anwendungen analysiert und optimiert werden können.

Herunterladen und Installieren

Hinweis

Sie müssen ein Visual Studio Enterprise Abonnent sein, um dieses Feature entweder in Visual Studio Enterprise unter Windows oder Visual Studio für Mac auf einem Mac zu entsperren.

Der Xamarin Profiler ist eine eigenständige Anwendung, die in Visual Studio für Mac und Visual Studio integriert ist, um die Profilerstellung innerhalb der IDE zu ermöglichen.

Laden Sie das Installationspaket für Ihre Plattform herunter:

Starten Sie nach dem Herunterladen das Installationsprogramm, um den Xamarin Profiler zu Ihrem System hinzuzufügen.

Profiler und Profilerstellung

Die Profilerstellung ist ein wichtiger und oft übersehener Schritt in der Anwendungsentwicklung. Die Profilerstellung ist eine Form der dynamischen Programmanalyse – sie analysiert das Programm, während es ausgeführt und verwendet wird. Ein Profiler ist ein Data Mining-Tool, das Informationen über die Zeitkomplexität, die Verwendung bestimmter Methoden und den zugeordneten Arbeitsspeicher sammelt. Mit einem Profiler können Sie detaillierte Drills durchführen und diese Metriken analysieren, um Problembereiche im Code zu ermitteln.

Beim Entwerfen und Entwickeln einer Anwendung ist es wichtig, nicht vorzeitig zu optimieren; Das heißt, Sie verbringen Zeit mit der Entwicklung Ihres Codes in Bereichen, auf die selten zugegriffen wird. Dies ist die Leistungsfähigkeit der Profilerstellung. Ein Profiler bietet Einen Einblick in die am häufigsten verwendeten Teile Ihrer Codebasis und hilft bei der Suche nach Bereichen, in denen Sie Zeit mit Verbesserungen verbringen sollten. Entwickler sollten darauf achten, zu verstehen, wo die meiste Zeit in Ihrer Anwendung verbracht wird und wie Der Arbeitsspeicher von Ihrer Anwendung verwendet wird.

Die Profilerstellung ist bei allen Arten der Entwicklung hilfreich, aber es ist besonders wichtig in der mobilen Entwicklung. Nicht optimierter Code ist auf mobilen Plattformen viel auffälliger als auf Desktopcomputern, und der Erfolg Ihrer App hängt von ansprechendem und optimiertem Code ab, der effizient ausgeführt wird.

Xamarin Profiler

Der Xamarin Profiler bietet Entwicklern eine Möglichkeit, Profile für Anwendungen aus Visual Studio für Mac oder Visual Studio zu erstellen. Der Profiler sammelt und zeigt Informationen über die App an, die dann vom Entwickler verwendet werden können, um das Verhalten einer Anwendung zu analysieren. Es gibt eine Reihe verschiedener Möglichkeiten, ein Profil für eine Anwendung mit dem Xamarin Profiler zu erstellen, nämlich die Speicherprofilerstellung und statistische Stichprobenerstellung. Diese werden über die Instrumente "Allocations" bzw. "Time Profiler" durchgeführt.

Derzeit kann der Xamarin Profiler verwendet werden, um Xamarin.iOS-, Xamarin.Android- und Xamarin.Mac-Anwendungen auf dem Mac (über Visual Studio für Mac) zu testen. Der Profiler ist ein separater Prozess von der IDE und kann daher nicht nur über Visual Studio für Mac gestartet werden, er kann auch als eigenständige Anwendung verwendet werden, um .exe und .mlpd Dateien zu untersuchen, die vom Monoprotokollprofiler erstellt wurden.

Profiler-Unterstützung

Unterstützung für den Xamarin Profiler ist auf den folgenden Plattformen verfügbar:

  • Visual Studio für Mac (macOS, mit Enterprise License)

    • Android
      • Gerät und Emulator
    • iOS
      • Gerät und Simulator
    • tvOS (Time Instrument wird nicht unterstützt)
      • Gerät und Simulator
    • Mac
  • Visual Studio (nur Enterprise-Version )

    • Android
      • Gerät und Emulator
    • iOS [Experimentell]
      • Gerät und Simulator
    • tvOS
      • Gerät und Simulator

Beachten Sie, dass Sie nurDebugkonfigurationen profilieren können.

Profiler–Grundlagen

In diesem Abschnitt werden die Teile des Xamarin Profilers vorgestellt und die Funktionen erläutert.

Profilerstellung in Ihrer App zulassen

Bevor Sie ihre App erfolgreich profilieren können, müssen Sie die Profilerstellung in den Projektoptionen der App zulassen.

  • iOS:

Build > iOS Debug > Aktivieren der Profilerstellung

Dialogfeld

  • Android:

Erstellen von > Android Debug > Aktivieren der Entwicklerinstrumentation

Dialogfeld

Starten des Profilers

Der Xamarin Profiler kann über Ihre IDE gestartet werden, wenn Sie eine Profilerstellung für Ihre iOS- oder Android-Anwendung oder als eigenständige Anwendung ausführen.

Starten von Visual Studio für Mac

  1. Stellen Sie zunächst sicher, dass Ihre Anwendung in Visual Studio für Mac geladen ist, und wählen Sie die (Standard-) Debugkonfiguration aus.
  2. Navigieren Sie zu Profilerstellung starten in Visual Studio für Mac ausführen >oder Xamarin Profiler in Visual Studio analysieren>, um den Profiler zu öffnen, wie im folgenden Diagramm dargestellt:

Starten des Profilers über Visual Studio für Mac

Wenn die Menüelemente nicht angezeigt werden, lesen Sie den Leitfaden zur Problembehandlung.

Dadurch wird der Profiler gestartet und die Profilerstellung für die Anwendung automatisch gestartet.

Der Profiler kann verwendet werden, um Arbeitsspeicher und Leistung zu messen. Dies wird durch die Instrumente Allocations und Time Profiler erreicht, die wir im nächsten Abschnitt ausführlich untersuchen werden.

Speichern und Laden von Profilersitzungen

Um eine Profilerstellungssitzung jederzeit zu speichern, wählen Sie > datei Speichern unter... in der Menüleiste des Profilers aus. Dadurch wird die Datei im mlpd-Format gespeichert, einem speziellen, stark komprimierten Format für die Profilerstellung von Daten.

Nach der Installation finden Sie den Xamarin Profiler in Ihrem Ordner "Anwendungen", wie im folgenden Screenshot dargestellt:

Öffnen eines eigenständigen Profilers über Mac

Sie können MLPD-Dateien in den Profiler laden, indem Sie die eigenständige Anwendung öffnen, Ziel auswählen und die Datei laden.

Weitere Informationen finden Sie unter Generieren von MLPD-Dateien.

Profilerfeatures

Der Xamarin Profiler besteht aus fünf Abschnitten, wie unten dargestellt:

  • Symbolleiste: Dies befindet sich oben im Profiler und bietet Optionen zum Starten/Beenden der Profilerstellung, auswählen eines Zielprozesses, Anzeigen der Laufzeit der App und Auswählen der geteilten Ansichten, aus denen die Profiler-Anwendung besteht.
  • Instrumentliste : Hier werden alle Instrumente aufgelistet, die für die Profilerstellungssitzung geladen wurden.
  • Diagrammdiagramm : Diese Diagramme beziehen sich horizontal auf die relevanten Instrumente in der Instrumentenliste. Ein Schieberegler (unter Zeitprofiler) kann verwendet werden, um die Skalierung zu ändern.
  • Bereich Instrumentdetails : Enthält Daten, die von der ausgewählten Ansicht des aktuellen Instruments angezeigt werden. Diese Ansichten werden im folgenden Abschnitt ausführlicher behandelt.
  • Inspektoransicht : Dies enthält Abschnitte, die vom segmentierten Steuerelement ausgewählt werden können. Die Abschnitte hängen vom ausgewählten Instrument ab und umfassen: Konfigurationseinstellungen, Statistiken, Informationen zur Stapelablaufverfolgung und Pfad zu Wurzeln.

Zuweisungen

Das Zuordnungsinstrument stellt detaillierte Informationen zu Objekten in der Anwendung bereit, während sie erstellt und Müll gesammelt werden.

Am oberen Rand des Profilers befindet sich das Zuordnungsdiagramm, in dem die Menge des während der Profilerstellung in regelmäßigen Abständen zugewiesenen Arbeitsspeichers angezeigt wird. Derzeit ist das Zuordnungsdiagramm die Gesamtzahl der Zuordnungen und NICHT die Größe des Heaps zu diesem Zeitpunkt. In gewissem Sinne wird es nie nach unten gehen, es wird immer nur zunehmen. Dies schließt Objekte ein, die auf dem Stapel zugeordnet sind. Je nach verwendeter Laufzeitversion kann das Diagramm unterschiedlich aussehen – auch für dieselbe App.

Im Instrument "Zuordnungen" gibt es verschiedene Datenansichten, mit denen Entwickler analysieren können, wie ihre Anwendung Arbeitsspeicher verwendet und freigibt. Diese Ansichten werden unten beschrieben:

  • Zuordnungen : Hier wird eine Liste aller Zuordnungen angezeigt und sie nach Klassennamen gruppiert. Dies bietet einen hervorragenden Überblick über die verwendeten Klassen und Methoden, wie oft sie verwendet werden, und die kollektive Größe der verwendeten Klassen. Wenn Sie auf eine Klasse doppelklicken, wird der zugewiesene Arbeitsspeicher angezeigt:

Die Inspektoransicht für Zuordnungen bietet Optionen zum Filtern und Gruppieren von Objekten, zum Bereitstellen von Statistiken über den zugewiesenen Arbeitsspeicher und die obersten Zuordnungen sowie Ansichten für Stapelablaufverfolgung und Pfad zum Stamm.

  • Aufrufstruktur : Dies zeigt die gesamte Aufrufstruktur aller Threads in der Anwendung an und enthält Informationen zum auf jedem Knoten zugeordneten Arbeitsspeicher. Wenn ein Element in der Liste ausgewählt wird, werden alle gleichgeordneten Knoten grau angezeigt. Sie können die Struktur erweitern oder auf das Element doppelklicken, um einen Drilldown zu erhalten. Beim Anzeigen dieser Datenansicht kann die Anzeigeeinstellungsinspektoransicht verwendet werden, um die Darstellungsweise zu ändern. Derzeit gibt es zwei Optionen:
    1. Invertierte Aufrufstruktur : Hierbei wird die Stapelablaufverfolgung von oben nach unten berücksichtigt. Dies ist eine praktische Ansichtsoption, da sie die tiefsten Methoden angibt, bei denen die CPU ihre Zeit verbracht hat.
    2. Nach Thread getrennt : Mit dieser Option wird die Aufrufstruktur nach Thread organisiert.
  • Momentaufnahmen : In diesem Bereich werden Informationen zu Speichermomentaufnahmen angezeigt. Um diese beim Erstellen der Profilerstellung für eine Liveanwendung zu generieren, klicken Sie auf der Symbolleiste an jedem Punkt, an dem Sie sehen möchten, welcher Speicher beibehalten und freigegeben wird. Anschließend können Sie auf die einzelnen Momentaufnahme klicken, um zu erkunden, was unter der Haube passiert. Beachten Sie, dass Momentaufnahmen nur beim Liveprofilieren einer App erstellt werden können.

Zeitprofiler

Das Time Profiler-Instrument misst genau, wie viel Zeit in den einzelnen Methoden einer Anwendung aufgewendet wird. Die Anwendung wird in regelmäßigen Abständen angehalten, und für jeden aktiven Thread wird eine Stapelablaufverfolgung ausgeführt. Jede Zeile im Bereich Instrumentdetails zeigt den ausführungspfad an, der befolgt wurde.

Das Diagramm zeigt, wie im folgenden Screenshot dargestellt, die Anzahl der Von der App empfangenen Beispiele während der Ausführung:

  • Aufrufstruktur : Zeigt die Zeit an, die in den einzelnen Methoden aufgewendet wurde:

Cycles

Durch die Verwendung von verwaltetem C#- und F#-Code kann es häufig vorkommen, und leider recht einfach Verweise auf Objekte zu erstellen, die nie verworfen werden. Mit diesem Instrument können Sie diese Objekte lokalisieren und die Zyklen anzeigen, auf die in Ihrer Anwendung verwiesen wird.

Profilerstellung von Anwendungen

Derzeit können nur die Standardmäßige Debugkonfigurationen profiliert werden.

Wenn Sie ein Profil für eine App mit einer anderen Konfiguration erstellen, wird das folgende Meldungsdialogfeld angezeigt:

Wählen Sie Aktualisieren aus, um fortzufahren.

SGen Garbage Collector und Profilerstellung

Der SGen-Garbage Collector wird für alle Xamarin-Plattformen verwendet.

SGen ist ein generationengeneraler GC, der Objekte einer Anwendung in drei Heaps ordnet: Nursery, Hauptheap und große Objektraum. Dies ermöglicht eine schnellere Ausführung der Garbage Collection. SGen ist derzeit die Standard-GC für Xamarin.Android- und Xamarin.iOS Unified-Anwendungen.

Die Xamarin.iOS-Anwendung, die die klassische API verwendet, verwendet den Boehm GC – einen konservativen Garbage Collector ohne Generation. Da es konservativ ist, ist es weniger wahrscheinlich, den verfügbaren Arbeitsspeicher freizugeben, was bei Verwendung des Profilers zu ungenauen Ergebnissen führen kann. Aus diesem Grund kann das Instrument Zuordnungen nicht mit dem Boehm Garbage Collector verwendet werden.

Während Sie mit einem Meldungsdialogfeld aufgefordert werden, wenn Ihre App boehm GC verwendet, empfiehlt Xamarin nicht, vorhandene iOS-Anwendungen, die Boehm verwenden, auf SGen zu wechseln, ohne sorgfältige Recherchen und gründliche Tests durchzuführen. Xamarin empfiehlt auch nicht, zur Profilerstellung zu SGen zu wechseln und dann zurückzuschalten, da diese Ergebnisse keine genauen Benchmarks für die Speicherauslastung liefern.

Weitere Informationen zur Speicherverwaltung finden Sie im Leitfaden zu bewährten Methoden für Arbeitsspeicher und Leistung .

Zusammenfassung

In diesem Leitfaden haben wir uns angesehen, was Profilerstellung ist und wie es für den Entwickler vorteilhaft ist. Anschließend haben wir den Xamarin Profiler eingeführt und einige Verlaufs- und Informationen zur Funktionsweise bereitgestellt. Schließlich haben wir die Features von Xamarin Profiler durchsichtet und die Instrumente für Zuordnungen und Zeitprofiler untersucht.