So verbessern Sie die Leistung von Apps im Metro-Stil

Entwicklerblog für Windows 8-Apps

Ein Einblick in die Entwicklung von Apps im Metro-Stil – präsentiert vom Windows 8-Entwicklerteam

So verbessern Sie die Leistung von Apps im Metro-Stil

  • Comments 0

Niemand mag langsame oder nicht reagierende Apps. Der Benutzer erwartet, dass Apps sofort auf Fingereingaben, Tippvorgänge, Klicks, Gesten und Tastendrücke reagieren. Außerdem erwartet er, dass Animationen flüssig laufen, Musik- und Videoclips schnell abgespielt, angehalten und neu gestartet werden können und bei Verwendung der App keine Wartezeiten entstehen. Das ist der erste aus einer ganzen Reihe von Beiträgen, wie Sie Ihre Apps „schnell und flüssig“ machen können.

Unsere Entwicklerteams haben sich sehr viele Gedanken darüber gemacht, wie die Leistung von Apps im Metro-Stil die Benutzer zufrieden stellt. Sie haben herausgefunden, welche Änderungen an der Plattform für eine schnellere und flüssigere Leistung sorgen und was bei der Entwicklung von Apps zu einer positiven Benutzererfahrung führt. In diesem Beitrag teile ich Ihnen einige der mühsam erarbeiteten Erkenntnisse mit, die Ihnen beim Erstellen von Apps helfen, die eine größtmögliche Kundenzufriedenheit erzielen.

Psychologische Aspekte von Leistung

Leistung ist mehr als einfache Zeitmessung und effiziente Algorithmen. Wenn ich über den Begriff Leistung im Zusammenhang mit Apps nachdenke, nehme ich gerne eine ganzheitliche Betrachtungsweise ein und berücksichtige auch die Erfahrung des Benutzers bei der Verwendung von Apps. Was bedeutet es, wenn eine App schnell und flüssig läuft? Man kann die Benutzererfahrungen in drei Kategorien einteilen: Wahrnehmung, Toleranz und Reaktionsfähigkeit.

Wahrnehmung: Das dauert eine Ewigkeit!

Die Wahrnehmung spielt für das „schnell“ in schnell und flüssig eine wichtige Rolle. Wir definieren die Wahrnehmung eines Benutzers von Leistung darüber, wie positiv der Zeitaufwand zwischen Aufgabenausführungen innerhalb der App in der Erinnerung des Benutzers bewertet wird. Im Idealfall stimmt die Wahrnehmung mit der Wirklichkeit überein. Weitaus häufiger jedoch ist dies nicht der Fall, und die Zeitwahrnehmung bestimmt das Urteil weit mehr als die Realität. Haben Sie jemals einen Installationsvorgang unbeaufsichtigt gelassen und mussten bei der Rückkehr feststellen, dass die Installation auf halbem Weg unterbrochen wurde, weil Sie eine weitere Frage hätten beantworten müssen?

Je mehr Schritte von einem Vorgang erinnert werden, desto langsamer erscheint er.

Tipp:
  • Verringern Sie die Zeitspanne zwischen den Tätigkeiten, die der Benutzer zur Bewältigung der Aufgabe ausführen muss.
  • Stellen Sie sicher, dass alle notwendigen Fragen und Benutzerinformationen gleich zu Beginn abgehandelt werden.
Vermeiden Sie:
  • die Aufteilung von Benutzeraktivitäten in mehrere, zeitlich voneinander getrennte Zeiträume.

Toleranz: Die Zeit vergeht schnell, wenn man sich amüsiert

Die Toleranz trägt sowohl zum „schnell“ als auch zum „flüssig“ bei. Wenn die Wahrnehmung ein Maß dafür, wie der Benutzer den Zeitaufwand in seiner Erinnerung einschätzt, dann ist die Toleranz ein Maß für die qualitative Einschätzung dieser Zeit.

Wenn ein Benutzer über die Dauer eines Vorgangs nicht informiert wird, kann das Warten zur Qual werden. Stellen Sie sich vor, dass Sie Fotos mithilfe einer App bearbeiten. Wenn Sie einen Filter hinzufügen möchten, reagiert die App nicht auf den Klick. Der eingefrorene Zustand ist schnell unerträglich, auch wenn er nur wenige Sekunden dauert.

Bei Foto-Apps wurde dieses Problem durch das Hinzufügen einer Statusleiste oder kleiner Animationen gelöst. Diese zeigen an, dass die App gerade dabei ist, den Filter anzuwenden. Der Benutzer kann die Dauer besser einschätzen und ist gewillt, höhere Wartezeiten in Kauf zu nehmen. Die App läuft sowohl schnell als auch flüssig – der Unterschied ist bemerkenswert.

Tipp:

  • Nehmen Sie sich die Zeit, und ermitteln Sie die Bereiche der App, die eine erhebliche (>= 1 s) Ladedauer erfordern.
  • Ergreifen Sie Maßnahmen, um die Ungewissheit der Benutzer während dieser Szenarien einzugrenzen oder zu beseitigen.
  • Bieten Sie Benutzern einen optischen Hinweis auf Prozessstatus und -dauer.
  • Verwenden Sie asynchrone APIs, um ein Blockieren des UI-Threads und ein Einfrieren der App-Ansicht zu vermeiden.

Vermeiden Sie:

  • bei lang dauernden Vorgängen kein Benutzerfeedback anzubieten.

Reaktionsfähigkeit: Reflexe < Reaktionen < Anerkennung

Die Reaktionsfähigkeit trägt zur Empfindung von „flüssig“ in schnell und flüssig bei. Wenn Toleranz ein Maß für die Qualität und die Vorteilhaftigkeit des Zeitaufwands ist, dann misst die Reaktionsfähigkeit das Verhältnis des erwarteten Zeitaufwands relativ zur geleisteten Tätigkeit. Zur Messung und Bewertung der Leistung einer Aktivität benötigt man zum Vergleich ein Zeitintervall. Ich nenne diese Zeitintervalle Interaktionsklassen. Wir verwenden diese Interaktionsklassen auch intern, um Reaktionszeiten für wichtige Szenarien unter Windows zu definieren und Fehler aufzuspüren, die nicht den Zielen des Produkts entsprechen.

Interaktionsklasse

Ziel

Obere Grenze

Menschliche Wahrnehmung

Typisches Szenario

Sofort

<= 50 ms

100 ms

Keine wahrnehmbare Verzögerung.

Eingabereaktion – Mausklick, Tastendruck usw.

Schnell

50 bis 100 ms

200 ms

Minimal wahrnehmbare Verzögerung. Kein Feedback notwendig.

Schwenken/Bildlauf durchführen

Typisch

100 bis 300 ms

500 ms

Flott, aber zu langsam für die Bezeichnung „schnell“. Kein Feedback notwendig.

Seiteninternes Dialogfeld öffnen (z. B. Info-Tipp, Popup, Ausfliegen usw.)

Reaktionsschnell

300 bis 500 ms

1 Sek

Nicht schnell, aber gefühlt reaktionsschnell. Kein Feedback notwendig.

Navigation auf eine neue Webseite, Zoomen, bearbeitete oder verfügbare Daten anzeigen

Fortlaufend

>500 ms

10 Sek

Mittlere Wartezeit, wird nicht mehr als reaktionsschnell empfunden. Nicht lang genug, um etwas anderes zu tun. Feedback eventuell erforderlich.

App starten, App andocken, Fehlermeldungen, Unterbrechungen, Update der Fortschrittsanzeige

Ausgedehnt

>5 Sek

>1 Minute

Lange genug, um während der Wartezeit etwas anderes zu tun. Feedback eventuell erforderlich.

Gerät/Bibliothek synchronisieren oder indizieren

Tipp:

  • Weisen Sie den wichtigen Szenarien Ihrer App die Interaktionsklasse zu, die der gewünschten Benutzererfahrung entspricht.
  • Stellen Sie fest, ob Ihre Szenarien das Ziel verfehlen, und optimieren Sie diese gegebenenfalls.
  • Stellen Sie fest, ob ein Szenario ein Benutzerfeedback erfordert, und stellen Sie dieses bereit.

Schlüsselerfahrungen für die Optimierung

Probleme bei der Leistungsfähigkeit zeigen sich auf unterschiedliche Weise. Sie können die Akkulaufzeit verringern, das Schwenken oder den Bilddurchlauf verzögern, sodass die App der Benutzerbedienung hinterherhinkt, oder die App-Ansicht für längere Zeit einfrieren. Selbstverständlich haben Sie zur Verbesserung der Leistungsfähigkeit nicht unendlich viel Zeit. Daher gehen wir im folgenden Abschnitt auf die Bereiche ein, bei denen eine Optimierung sinnvoll ist, und geben Ihnen einige Anhaltspunkte zur Durchführung dieser Optimierungen.

Zunächst der Hinweis, dass ein Benutzer eine Veränderung erst wahrnimmt, wenn ein Prozess um 20 % schneller oder langsamer ist.

Diagramm, das zeigt, dass 20 Prozent schneller oder langsamer als die aktuelle Dauer wahrnehmbar ist

Sie werden vielleicht feststellen, dass Sie durch einige leicht durchzuführende Anpassungen die Leistung Ihrer App bezüglich der Schlüsselszenarien enorm steigern können. Wenn Sie diese Probleme gelöst haben, stoßen Sie mit zunehmender Wahrscheinlichkeit auf kein weiteres Problem, durch das alleine die Prozessdauer um 20 % verringert wird. Weitaus häufiger trägt eine Ansammlung kleinerer Probleme entlang des Weges zur Benutzererfahrung bei. Im folgenden Abschnitt bespreche ich deshalb ein großartiges Tool für die Erforschung dieses Wegs.

Erstellen von App-Profilen

Eine einfache und sehr schnell verfügbare Methode zur Ermittlung wirkungsvoller Optimierungen ist das Erstellen eines App-Profils. Ein Profil liefert Daten über den Zeitaufwand einer App in ihren unterschiedlichen Funktionen und erkennt die Bereiche mit dem größten Arbeitsaufwand. Glücklicherweise verfügt Visual Studio 11 über ein umfangreiches Profilerstellungstool, auf das Sie über die Windows 8 Consumer Preview zugreifen können.

Denken Sie vorher daran, dass Windows 8 auf vielen verschiedenen Geräten ausgeführt wird, und Leistungsmessungen mit einer leistungsstarken Hardware nicht unbedingt die Leistungsfähigkeit auf anderen Geräten wiedergeben. Ich verwende zur Leistungsmessung bei vielen eigenen Funktionen einen leistungsschwachen Laptop. Weitere Informationen finden Sie im Blog zum Thema Installation der Consumer Preview: Systemempfehlungen.

So bereiten Sie einen Computer für Messungen vor

  1. Stellen Sie sicher, dass der Computer an das Stromnetz angeschlossen ist und nicht im Akkubetrieb verwendet wird – bei vielen Systemen macht es einen Unterschied, ob der Akku oder das Netzwerkkabel verwendet wird.
  2. Verwenden Sie für die Messungen nicht Remotedesktop, da dadurch die Hardwarebeschleunigung deaktiviert und die Ergebnisse verzerrt werden können.
  3. Stellen Sie sicher, dass die gesamte Speicherauslastung des Systems weniger als 50 % beträgt. Bei einer höheren Speicherauslastung sollten Sie so lange Apps schließen, bis die Auslastung bei 50 % liegt. So stellen Sie sicher, dass die tatsächliche Wirkung Ihrer App gemessen wird und keine anderen Prozesse.

So starten Sie die Profilerstellung für Ihre App

  1. Starten Sie die App in Visual Studio.
  2. Wählen Sie im Debug-Menü eine der beiden Leistungsanalyseoptionen aus:
  3. Menü mit den Optionen „Leistungsanalyse starten“ (Alt+F2) und „Starten der Leistungsanalyse angehalten“ (Ctrl+Alt+F2)

    • Leistungsanalyse starten: Sie beginnen unmittelbar mit der Aufzeichnung von Auslastungsinformationen und starten die App.
    • Starten der Leistungsanalyse angehalten: Sie starten die App und können die Aufzeichnung von Informationen später fortsetzen. Mit dieser Option kann die App in einen bestimmten Zustand versetzt werden, bevor Informationen aufgezeichnet werden (etwa um ein spezifisches Benutzerszenario zu testen).
  4. Wechseln Sie nach Durchführen der Aktionen, die Sie messen wollten, wieder zu Visual Studio, und klicken Sie auf Profilerstellung beenden. Dadurch generiert VS einen Bericht und zeigt Schlüsselinformationen über die Aktivitäten der App an.

Link für „Profilerstellung beenden“ in Visual Studio

Zwei der nützlichsten Ansichten im Leistungsbericht sind die Aufrufstrukturansicht und die Funktionsdetailsansicht. In der Aufrufstrukturansicht werden alle Funktionen angezeigt, die Ihre App während der Ausführung aufgerufen hat, wie häufig sie aufgerufen wurden und wie lange sie zur Ausführung benötigten. Außerdem steht die Schaltfläche „Langsamsten Pfad erweitern“ zur Verfügung, die anzeigt, welche Funktionen am längsten zur Ausführung benötigten. Auf diese Bereiche sollten Sie Ihre Optimierungen vorrangig konzentrieren, da sie hier voraussichtlich die größten Auswirkungen erzielen.

Schaltfläche „Langsamsten Pfad erweitern“ in der Aufrufstrukturansicht

Der Bericht zeigt sowohl die inklusiven als auch die exklusiven Zeiten für jede Funktion an. Die exklusive Zeit misst prozentual die Zeit, die für die Ausführung des Codes in dieser Funktion benötigt wurde. Die inklusive Zeit ist der prozentuale Zeitanteil zwischen dem Aufrufen der Funktion und ihrer Rückgabe. Mit anderen Worten, es ist nicht nur die zur Ausführung des Codes in dieser Funktion erforderliche Zeit, sondern auch die Zeit für die Ausführung von Code in den einzelnen Funktionen, die sie aufruft.

Für jede der Funktionen in der App können Sie die über die Funktionsdetailsansicht detaillierte Informationen zur Funktion abrufen, einschließlich des spezifischen Codes, den sie ausgeführt hat, der Funktionen, die sie aufgerufen hat und wie lange diese Funktionen benötigt haben. Im Beispiel, das in der Abbildung gezeigt wird, leistet die Funktion Array.concat mit 29,7 % der Ausführungszeit der App den größten Beitrag zum langsamsten Pfad. Die Funktionsdetailsansicht zeigt uns, dass die Funktion Array.concat selbst tatsächlich nur etwa 12,6 % der Zeit in Anspruch nimmt (in der Abbildung orange) und der Hauptteil der Zeit auf die Funktion get_MainResourceMap fällt. Diese Funktion ruft die Verkettungsfunktion als Teil ihrer Ausführung auf (in der Abbildung lila). Sie können dann auf jede dieser Funktionen klicken, um weitere Informationen anzuzeigen.

Die Funktionsdetailsansicht für „Array.concat“ zeigt den jeweiligen prozentualen Anteil von aufrufenden Funktionen, aktuellen Funktionen und aufgerufenen Funktionen an.

Einige Wochen vor der Veröffentlichung der Windows 8 Consumer Preview musste ich während der Verwendung einer der Apps feststellen, dass mein Laptop heiß wurde und die Lüfter ansprangen. Zusammen mit dem Besitzer der App konnten anhand der Profilerstellung einige Codepfade identifiziert werden, die eine sehr hohe überflüssige CPU-Auslastung erzeugen. Diese Pfade wurden dann korrigiert. Der Unterschied war sofort spürbar, und andere App-Szenarien (z. B. Andocken) wurden durch die Änderungen ebenfalls verbessert.

Anhalten bringt Sie voran

Ein App-Start wird nur dann ausgeführt, wenn Ihre App nicht angehalten ist – ansonsten wird sie beim Fortsetzen fast augenblicklich wieder geöffnet. Die App im Anhaltestatus zu halten, ist eine Technik zur Steuerung von Wahrnehmung, Toleranz und Reaktionsfähigkeit. Die Benutzer können die App schneller genießen und müssen nicht bei der Verwendung der App diese Ungewissheit beim Laden ertragen. Kurz gesagt, wenn Sie es schaffen, dass Ihre App nicht beendet wird, landen Sie einen echten Volltreffer. Am einfachsten erreichen Sie dies, indem Sie die Speicherauslastung der App im Anhaltestatus gering halten.

Bevor die App angehalten wird, stehen ihr noch ein paar Sekunden zum Arbeiten zur Verfügung. Entfernen Sie in dieser Zeit alle großen Objekte, die beim Fortsetzen leicht erneut abgerufen werden können. Dadurch werden der Speicherbedarf der App niedrig gehalten und die Wahrscheinlichkeit, dass das System die App beendet, um für anderes Platz zu schaffen, wesentlich reduziert. Auf folgende Weise können Sie feststellen, ob die App korrekt angehalten wird:

  1. Starten Sie die App, und wechseln Sie zurück zum Desktop.
  2. Starten Sie den Aufgaben-Manager, indem Sie STRG+UMSCHALTTASTE+ESC drücken, und klicken Sie auf „Weitere Informationen“, um alle verfügbaren Optionen anzuzeigen.
  3. Klicken Sie auf „Ansicht“ > „Statuswerte“ > „Anhaltestatus anzeigen“.

Wählen Sie im Menü „Ansicht“ zunächst „Nach Typ gruppieren“ und dann „Anhaltestatus anzeigen“ aus.

Nach wenigen Sekunden erscheint das Wort „Angehalten“ neben dem Namen der App. Stellen Sie sicher, dass der Speicherbedarf des privaten Arbeitssatzes der App im Anhaltestatus erheblich niedriger ist als während deren Ausführung. Für die angehaltene App sollten, je nach deren Komplexität und allgemeiner Größe, die folgenden Speichermetriken angestrebt werden:

App-Komplexität (ca.)

Privater Satz im Anhaltestatus (max.)

Minimale App (z. B. Hello World)

40 bis 60 MB

Mittlere App (z. B. Wetter)

60 bis 80 MB

Große App (z. B. Windows Live Fotos)

120 bis 150 MB

So können Sie anzeigen, wie viel Speicherplatz die App im Anhaltestatus belegt

  1. Stellen Sie anhand der bereits beschriebenen Schritte sicher, dass die App angehalten ist.
  2. Klicken Sie mit der rechten Maustaste im Aufgaben-Manager auf den Namen der App, und klicken Sie dann auf „Zu Details wechseln“. Damit können Sie weitere Informationen über den Prozess der App abrufen (bei allen Apps im Metro-Stil in JavaScript ist der Prozess „WWAHost.exe“, ansonsten wird der Name der App als Prozess angezeigt).
  3. Stellen Sie sicher, dass die Spalte „Arbeitsspeicher (privater Arbeitssatz)“ vorhanden ist. Ist dies nicht der Fall, klicken Sie mit der rechten Maustaste auf eine beliebige Spalte, wechseln Sie zu Spalten auswählen, und wählen Sie dann Arbeitsspeicher (privater Arbeitssatz) aus.
  4. In der Liste der Spaltennamen ist „Arbeitsspeicher (privater Arbeitssatz)“ ausgewählt

  5. Der unter dieser Spalte aufgelistete Wert ist der private Arbeitssatz Ihrer App.


Die Speicherauslastung ist mit 20.736 K angegeben

Das richtige Verhalten im App-Ökosystem

So enttäuschend das zunächst klingt, aber Ihre App ist nicht die einzige, die benutzt wird :-). Also verhalten Sie sich korrekt im Betriebssystem des Benutzers, damit er nicht auf die Idee kommt, etwaige Latenzen im System Ihrer App zuzuschreiben, und damit anfängt, sie mit schlechter Leistung oder verkürzter Akkulaufzeit in Verbindung zu bringen. Die folgenden Tipps helfen Ihrer App, gut mit anderen auszukommen.

Treiben Sie nicht die Speicherauslastung auf die Spitze

Aufgabe des Betriebssystems ist es, den Ressourcenbedarf aller Apps im Metro-Stil zu erfüllen, indem es angehaltene Apps automatisch beendet, um Platz für neue zu schaffen. Auf diese Weise nimmt es dem Benutzer die Verwaltung der Ressourcenverwaltung ab. Das hat die Nebenwirkung, dass bei einer App mit großem Speicherbedarf möglicherweise andere Apps beendet werden, selbst wenn diese App den Speicherplatz schnell wieder freigibt. Um bei der Arbeit an komplexen Vorgängen dieses Problem zu vermeiden, geht man diese am besten in kleineren Abschnitten an.

Beim Codieren in einer Sprache, die vom Speicher verwaltet wird (wie JavaScript oder C#), lässt sich extrem schwer steuern, wann Speicherbelegungen auftreten. Eine Falle, in die man leicht hineintappt, ist das Laden von Ressourcen, die zu groß für die Auflösung des aktuellen Betriebssystems sind, und sie entsprechend anzupassen. Sie können die neuen Miniatur-APIs verwenden, um Ressourcen abzurufen, die der Zielauflösung entsprechen, und so unnötig hohen Zeitaufwand zu vermeiden. Auf diese Weise haben wir die Speicherauslastung eines bildbasierten Puzzlespiels, das wir zum Testen verwenden, enorm reduziert.

Unabhängig von der Sprache empfehle ich Ihnen, für die App, je nach deren Komplexität und allgemeiner Größe, die folgenden Laufzeitspeichermetriken anzustreben:

App-Komplexität (ca.)

Gesamtgröße Arbeitssatz (max.)

Minimale App (z. B. Hello World)

50 bis 70 MB

Mittlere App (z. B. Wetter)

80 bis 100 MB

Große App (z. B. Fotos)

120 bis 150 MB

So können Sie anzeigen, wie viel Speicherplatz die App bei ihrer Ausführung belegt

  1. Starten Sie den Aufgaben-Manager, indem Sie STRG+UMSCHALTTASTE+ESC drücken, und klicken Sie auf Weitere Informationen, um alle verfügbaren Optionen anzuzeigen.
  2. Klicken Sie auf das Menüelement „Optionen“, und stellen Sie sicher, dass Immer im Vordergrund aktiviert ist.
  3. Starten Sie die App. Klicken Sie mit der rechten Maustaste auf die App, wenn sie im Aufgaben-Manager angezeigt wird, und klicken Sie dann auf Zu Details wechseln.
  4. Stellen Sie sicher, dass die Spalte „Arbeitssatz (Speicher)“ vorhanden ist. Ist dies nicht der Fall, klicken Sie mit der rechten Maustaste auf eine beliebige Spalte, und wechseln Sie dann zu Spalten auswählen. Aktivieren Sie die Spalte Arbeitssatz (Speicher).

    In der Spaltenliste ist „Arbeitssatz (Speicher)“ ausgewählt

  5. Der unter dieser Spalte aufgelistete Wert ist der gesamte Arbeitssatz Ihrer App.

Minimieren Sie die Auslastung an Systemressourcen, wenn die App angedockt oder im Leerlauf ist.

Eines der wichtigsten Themen für Benutzer ist die Akkulaufzeit ihrer Geräte. Stellen Sie daher unbedingt sicher, dass Ihre Apps im Metro-Stil ihren Energiesparbeitrag leisten, indem sie die Systemressourcen freigeben, wenn der Benutzer nicht gerade aktiv mit ihnen interagiert. Hier sind einige Hinweise, wie sich die Ressourcenauslastung verringern lässt:

Es sollten keine Animationen, Sounds oder Hintergrundvideos ausgeführt werden, während die App angedockt ist.

  • Ihre App steht dann nicht mehr im Mittelpunkt. Gestalten Sie Ihre App gerne auffällig und benutzerfreundlich, aber sie sollte nicht Ressourcen belegen, auf die die Haupt-App zugreift, oder unnötig Akkuleistung verbrauchen.
  • Voraussetzung dafür ist natürlich, dass Ihre App kein Client zur Musik- oder Videowiedergabe ist.

Es sollten keine Animationen, Sounds oder Hintergrundvideos in einer Endlosschleife ausgeführt werden.

  • Wenn der Benutzer über einen kurzen Zeitraum nicht mehr mit der App interagiert, halten Sie diese Aktivitäten an. Sie können sie beruhigt fortsetzen, wenn der Benutzer das nächste Mal mit der App interagiert.
  • Ich habe Apps erlebt, deren CPU-Auslastung von 40 % im Leerlauf auf 0 % sank, nur weil sie ihre Hintergrundaktivitäten angehalten haben.

Führen Sie keine Dateizwischenspeicherung, Gerätesynchronisierung oder andere festplattenintensive Vorgänge durch, während die App angedockt oder im Leerlauf ist.

  • Unnötiger Festplattenzugriff erhöht die Suchzeiten für andere Vorgänge und verbraucht viel Energie.

Weiter vorangehen

In diesem Beitrag habe ich verschiedene Betrachtungsweisen von Leistung beschrieben und Wege erläutert, wie Sie Ziele für die Schlüsselerfahrungen Ihrer App festlegen können. Des Weiteren ich habe über einige Tools gesprochen, mit denen Sie besser die Bereiche identifizieren können, die Sie eventuell optimieren sollten. Mein nächster Beitrag wird davon handeln, wie man diese Optimierungen auch für die größten Problembereiche durchführt und einigen verbreiteten Fallgruben ausweicht. Ich hoffe, dass diese Hinweise sich Ihnen als nützlich erweisen!

Bis zum nächsten Mal,

-- David Tepper, Programmmanager, Windows

  • Loading...
Leave a Comment
  • Please add 8 and 1 and type the answer here:
  • Post