Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Benutzer erwarten, dass ihre Apps reaktionsfähig bleiben, sich natürlich fühlen und ihren Akku nicht entwässern. Technisch gesehen ist die Leistung eine nicht funktionale Anforderung, aber die Behandlung der Leistung als Feature hilft Ihnen, die Erwartungen Ihrer Benutzer zu erfüllen. Geben Sie Ziele an und messen Sie Ergebnisse – dies sind schlüsselfaktoren. Ermitteln Sie Ihre leistungskritischen Szenarien, definieren Sie, was eine gute Leistung bedeutet, und messen Sie dann frühzeitig und häufig während des gesamten Lebenszyklus Ihres Projekts, um sicher zu sein, dass Sie Ihre Ziele erreichen werden.
Festlegen von Zielen
Die Benutzererfahrung ist eine einfache Möglichkeit, um eine gute Leistung zu definieren. Die Startzeit einer App kann die Wahrnehmung der Leistung eines Benutzers beeinflussen. Ein Nutzer könnte eine App-Startzeit von unter einer Sekunde als hervorragend, von unter fünf Sekunden als gut und von über fünf Sekunden als schlecht ansehen.
Andere Metriken haben weniger offensichtliche Auswirkungen auf die Benutzererfahrung, z. B. Arbeitsspeicher. Die Wahrscheinlichkeit, dass eine App beendet wird, während sie angehalten oder inaktiv ist, steigt mit der Menge des Arbeitsspeichers, den die aktive App verwendet. Die hohe Speicherauslastung beeinträchtigt die Erfahrung für alle Apps auf dem System, sodass ein Speicherverbrauchsziel angemessen ist.
Legen Sie anfängliche Ziele fest, die spezifisch und messbar sind. Sie sollten in drei Kategorien unterteilt werden:
- Zeit – wie lange es dauert, bis Benutzer oder die App Aufgaben ausführen
- Flüssigkeit – Die Rate und Kontinuität, mit der sich die App als Reaktion auf benutzerinteraktion neu gezeichnet hat
- Effizienz – wie gut die App Systemressourcen spart, einschließlich Akkuleistung
Uhrzeit
Stellen Sie sich akzeptable Bereiche der verstrichenen Zeit (Interaktionsklassen) vor, damit Benutzer ihre Aufgaben ausführen können.
| Interaktionsklasse | Nutzerwahrnehmung | Ideal | Maximum | Examples |
|---|---|---|---|---|
| Schnell | Minimal spürbare Verzögerung | 100 ms | 200 ms | App-Leiste aufrufen; Drücken einer Schaltfläche (erste Antwort) |
| Typisch | Schnell, aber nicht schnell | 300 ms | 500 ms | Größe ändern; Semantischer Zoom |
| Reaktionsfähig | Nicht schnell, aber reaktionsfähig | 500 ms | 1 Sekunde | Navigieren Sie zu einer anderen Seite; setzen Sie die App fort. |
| Aufrufen | Wettbewerbserfahrung | 1 Sekunde | 3 Sekunden | Erstmaliges Starten der App |
| Kontinuierlich | Fühlt sich nicht mehr reaktionsfähig | 500 ms | 5 Sekunden | Herunterladen einer Datei aus dem Internet |
| Gefangener | Lang; der Benutzer könnte abspringen | 500 ms | 10 Sekunden | Installieren mehrerer Apps aus dem Store |
Weisen Sie den Leistungsszenarien Ihrer App Interaktionsklassen zu. Weisen Sie für jedes Szenario die Punkt-in-Time-Referenz der App, einen Teil der Benutzeroberfläche und eine Interaktionsklasse zu.
Flüssigkeit
Bestimmte messbare Flüssigkeitsziele für Ihre App können Folgendes umfassen:
- Kein stockendes Neuzeichnen des Bildschirms (Störungen)
- Animationen werden mit 60 Frames pro Sekunde (FPS) gerendert.
- Wenn ein Benutzer schwenkt oder scrollt, zeigt die App 3–6 Inhaltsseiten pro Sekunde an.
Efficiency
Zu den spezifischen messbaren Effizienzzielen für Ihre App gehören u. U.:
- Der CPU-Prozentsatz Ihrer App liegt bei oder unter einem Zielwert, und die Speicherauslastung in MB liegt immer bei oder unter einem Ziel.
- Wenn die App inaktiv ist, ist die CPU- und Arbeitsspeichernutzung minimal.
- Ihre App kann aktiv für eine Zielanzahl von Stunden im Akkubetrieb verwendet werden.
Entwerfen Sie Ihre App für hohe Leistung
Verwenden Sie Ihre Leistungsziele, um das Design Ihrer App zu beeinflussen. Berücksichtigen Sie diese Aspekte:
UI
- Maximieren Sie die Analyse- und Ladezeit sowie die Speichereffizienz für jede Seite, indem Sie Ihr XAML-Markup optimieren. Verzögern Sie das Laden der Benutzeroberfläche und des Codes, bis sie benötigt wird.
- Für
ListViewundGridViewbringen Sie alle Elemente auf die gleiche Größe und nutzen Sie möglichst viele Optimierungstechniken. - Deklarieren Sie die Benutzeroberfläche im Markup, anstatt sie im Code zwingend zu konstruieren.
- Verzögern Sie das Erstellen von UI-Elementen, bis der Benutzer sie mit dem x:Load-Attribut benötigt.
- Bevorzugen Sie Designübergänge und Animationen gegenüber Storyboard-Animationen. Storyboardanimationen erfordern konstante Aktualisierungen auf dem Bildschirm und halten die CPU- und Grafikpipeline aktiv.
- Laden Sie Bilder in einer größe, die für die Ansicht geeignet ist, in der Sie sie präsentieren.
CPU, Arbeitsspeicher und Leistung
- Verteilen Sie Aufgaben mit niedrigerer Priorität auf Threads mit niedrigerer Priorität. Siehe asynchrone Programmierung und die DispatcherQueue-Klasse .
- Minimieren Sie den Speicherbedarf Ihrer App, indem Sie teure Ressourcen (z. B. Medien) freigeben, wenn sie nicht benötigt werden.
- Vermeiden Sie Speicherlecks, indem Sie Ereignishandler nach Möglichkeit deregistrieren und Referenzen auf UI-Elemente entfernen.
- Achten Sie bei der Akkueffizienz darauf, wie oft Sie Daten abfragen, einen Sensor abfragen oder die Arbeit an der CPU planen, wenn sie im Leerlauf ist.
Datenzugriff
- Wenn möglich, sollten Sie Inhalte vorab abrufen.
- Zwischenspeichern von Inhalten, die für den Zugriff teuer sind.
- Zeigen Sie bei Cache-Fehlzugriffen so schnell wie möglich eine Platzhalter-UI an, die signalisiert, dass die App noch Inhalte lädt.
Instrument zur Leistungsmessung
Fügen Sie während des Codes Code hinzu, der Nachrichten und Ereignisse an bestimmten Stellen protokolliert, während Die App ausgeführt wird. Verwenden Sie später Profilerstellungstools wie Windows Performance Recorder und Windows Leistungsanalyse (beide in der Windows Performance Toolkit enthalten), um einen Bericht über die Leistung Ihrer App zu erstellen und anzuzeigen.
Windows stellt Protokollierungs-APIs bereit, die von der Ereignisablaufverfolgung für Windows (ETW) unterstützt werden, die eine umfassende Lösung für die Ereignisprotokollierung und Ablaufverfolgung bieten. Die APIs im Namespace Windows.Foundation.Diagnostics enthalten die Klassen FileLoggingSession, LoggingActivity, LoggingChannel und LoggingSession.
// using Windows.Foundation.Diagnostics;
LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");
myLoggingChannel.LogMessage("Here's my logged message.", LoggingLevel.Information);
So protokollieren Sie Start- und Stoppereignisse über einen bestimmten Zeitraum:
LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");
LoggingActivity myLoggingActivity;
using (myLoggingActivity = new LoggingActivity("MyLoggingActivity", myLoggingChannel))
{
// A start event is logged when the activity begins.
// Add code here to do something of interest.
}
// An end event is logged when the activity ends.
Testen und messen Sie anhand von Leistungszielen
Verwenden Sie diese Techniken und Tools, um zu testen, wie Ihre App ihren Leistungszielen entspricht:
- Testen Sie eine Vielzahl von Hardwarekonfigurationen, einschließlich Desktops, Laptops, Ultrabooks und Tablets.
- Testen Sie eine Vielzahl von Bildschirmgrößen. Breitere Bildschirme zeigen mehr Inhalte an, was sich negativ auf die Leistung auswirken kann.
- Entfernen Sie so viele Testvariablen wie möglich:
- Deaktivieren Sie Hintergrund-Apps auf dem Testgerät.
- Erstellen Sie Ihre App in der Release-Konfiguration, bevor Sie sie auf dem Testgerät bereitstellen.
- Führen Sie die App mehrmals aus, um zufällige Testvariablen zu beseitigen und konsistente Messungen sicherzustellen.
- Testen Sie auf eingeschränkte Stromversorgung. Die Geräte der Benutzer haben möglicherweise deutlich weniger Leistung als Ihr Entwicklungscomputer.
- Verwenden Sie eine Kombination aus Tools wie Visual Studio Diagnosetools und Windows Leistungsanalyse, um die App-Leistung zu messen.
Reagieren auf Leistungstestergebnisse
Ermitteln Sie nach der Analyse der Leistungstestergebnisse, ob Änderungen erforderlich sind:
- Sollten Sie Ihre App-Designentscheidungen ändern oder Ihren Code optimieren?
- Sollten Sie die Instrumentierung im Code hinzufügen, entfernen oder ändern?
- Sollten Sie Ihre Leistungsziele überarbeiten?
Wenn Änderungen erforderlich sind, nehmen Sie sie vor, und kehren Sie zu Instrumentierung oder Tests zurück.
Optimieren
Optimieren Sie nur die leistungskritischen Codepfade in Ihrer App – diejenigen, für die die meiste Zeit aufgewendet wird. Profilerstellung teilt Ihnen mit, welche Bereiche diese sind. Häufig gibt es einen Kompromiss zwischen guten Entwurfspraktiken und Code, der bei der höchsten Optimierung ausgeführt wird. Priorisieren Sie die Produktivität von Entwicklern und ein gutes Softwaredesign in Bereichen, in denen die Leistung keine Rolle spielt.
Verwandte Inhalte
Windows developer