Hintergrundeinführen
Auf dem Smartphone-Markt ziehen High-End-Modelle oft die meiste Aufmerksamkeit auf sich, aber auch Low-End-Modelle nehmen einen nicht zu vernachlässigenden Anteil ein. Um den Bedürfnissen des Low-End-Marktes gerecht zu werden, bringen viele Hersteller weiterhin Low-End-Mobiltelefonserien auf den Markt. Darüber hinaus wurden Mid- bis High-End-Modelle in den letzten Jahren aufgrund der schnellen Iteration der Systemhardware nun als Low-End-Modelle klassifiziert. Die iQiyi APP verfügt über eine riesige Nutzerbasis, von der auch Nutzer von Low-End-Modellen einen erheblichen Teil ausmachen. Eine Low-End-Maschinenoptimierung kann diesen Benutzern ein stabiles, reibungsloses und effizientes Benutzererlebnis bieten. Im Folgenden wird die Optimierungsstrategie von iQiyi APP für Low-End-Maschinen aus drei Dimensionen vorgestellt: Kaltstart, Flüssigkeit und Ladegeschwindigkeit.
Low-End-Planungsstrategie für Maschinen
Bevor wir die Optimierung einführen, werfen wir einen Blick auf die Standards von Low-End-Maschinen. Die Beurteilung von Low-End-Maschinen basiert normalerweise auf Faktoren wie Gerätemodell, Speichergröße und Systemversion. iQiyi APP verfügt über eine eigene Low-End-Maschinenbewertungsstrategie, mit der Optimierungsstrategien nach Szenario (Start, Sprachkompetenz usw.) und Ebenen (Speicher, Modell, System usw.) im Richtlinienhintergrund konfiguriert werden können, um die beste Erfahrung in verschiedenen Bereichen zu gewährleisten Szenarien.
Optimierung starten
Der Start ist die erste Tür, die eine APP den Benutzern öffnet. Ihre zeitaufwändige Zeit wirkt sich direkt auf das spätere Seherlebnis und die Bindung des Benutzers aus und hat erhebliche Auswirkungen auf die Geschäftsindikatoren. Daher ist die Startup-Optimierung ein zentraler Arbeitsinhalt in Richtung technischer Optimierung.
Verwandte Einführung
Der Startpunkt und der Endpunkt der Startphase: iQiyi APP verwendet Application.attachBaseContext als Startpunkt. Die Dauer dieser Phase wird als normale Online-Kaltstartzeit angesehen. Dies umfasst hauptsächlich die Phasen der Anwendungserstellung, der MainActivity-Erstellung und -Anzeige, Werbung, das Laden und Rendern von Navigationsdaten für die obere und untere Homepage sowie das Laden und Rendern von Homepage-Daten.
In diesem Prozess ist es notwendig, herauszufinden, welche Arbeit die Geschäftsschicht geleistet hat, die Notwendigkeit und den Zeitpunkt ihrer Ausführung zu bewerten und die Rationalität des Planungsthreads zu überwachen ist in den Langzeitschlaf gefallen; die Haupt-Thread-Nachricht/Hintergrund-Nachrichtenüberwachung und -verwaltung, ob Aufgaben ausgelöst werden, die nicht den Erwartungen entsprechen, ob ungenutzte Möglichkeiten zum Vorladen vollständig genutzt werden usw.
Atomisierung von Geschäftsfunktionen: Um Aufgaben in der Startphase ordnungsgemäß zu planen und Ressourcen angemessen zuzuweisen, wurde eine Reihe von TaskManager-Frameworks für die Aufgabenverwaltung entwickelt und die Geschäftsfunktionsimplementierung in benutzerdefinierte Aufgaben gepackt, in genügend Details aufgeteilt und Entworfen: Bestimmen Sie die Ausführungsabhängigkeiten zwischen Aufgaben, die voraussichtlich auszuführenden Threads, den Ausführungszeitpunkt usw. und übergeben Sie sie dann zur einheitlichen Verarbeitung an den TaskManager. Diese Ebene der Aufgabenverwaltung ist die Grundlage für unsere Implementierung der Startoptimierung.
Optimierungspraxis
Zusammenführung der Startseite auf dem Bildschirm öffnen
In den frühen Tagen hatte die iQiyi APP zwei Aktivitäten: den Startbildschirm und die Startseite. Diese beiden Aktivitäten brachten einige Probleme mit der Benutzererfahrung mit sich: Die Low-End-Maschine verzögerte sich offensichtlich, wenn der Bildschirm geöffnet und die Startseite aufgerufen wurde wird nicht sofort angezeigt und der Benutzer kann die Homepage-Daten sehen und Bilder müssen von Grund auf geladen werden.
Die meisten Szenen in der Bildschirmöffnungsphase verfügen über Bildschirmöffnungsanzeigen und die Startseite in einer Aktivität. Verwenden Sie die Bildschirmöffnungsanzeigephase, um die Startseite unter der Bildschirmöffnungsseite zu laden und die Startseitendaten und die Benutzeroberfläche zu trennen Durch die Maximierung dieser Stufe kann die Homepage sofort am Ende des Startbildschirms angezeigt werden, und Verzögerungen auf Low-End-Rechnern werden deutlich verbessert .
Auch die Darstellung der Homepage hat einen gewissen Einfluss auf das Öffnen der Bildschirmanzeige. Die Anzeige des Anzeigen-Countdowns ist instabil und die Wirkung einiger Arten von Anzeigen ist nicht gleichmäßig. Das Laden der Homepage ist in viele Schritte unterteilt, um das Problem des Auslösens des Werberückrufs zu lösen. Die Countdown-Anzeige verwendet SurfaceView-Rendering, um ihre Stabilität sicherzustellen.
Optimierung der Aufgabenplanung
Ordnen Sie je nach Starttyp die Reihenfolge der Aufgabenausführung in der Startphase so an, dass sie vorgezogen, verzögert oder nicht ausgeführt wird, damit Benutzer die Zielseite so früh wie möglich sehen können. Im Folgenden finden Sie Anpassungen, die iQiyi an Aufgaben im Rahmen des normalen Startpfads von Low-End-Maschinen vorgenommen hat.
Sperrenkonflikt lösen
Wettbewerb beim Laden der nativen Bibliothek: Das Laden der C-Schicht-Bibliothek ist gesperrt. Nach Erreichen der C-Schicht wird der Ladevorgang weiterhin ausgeführt, was dazu führt, dass der Java-Schicht-Thread blockiert wird und warte. iQIYI muss die Lib-Bibliothek in der Anwendungsphase laden und die entsprechende JNI-Methode aufrufen, nachdem der Hauptthread auf den Abschluss des Ladevorgangs gewartet hat und wenn dort die Situation auftritt, in der das Wiedergabemodul die Wiedergabeseite für externe Zwecke aufruft Es ist erforderlich, die Wiedergabe vorab zu laden. Die zugehörige Lib-Bibliothek ist erforderlich, was dazu führt, dass der Hauptthread in einen Wartezustand wechselt. Indem Sie die Ziel-Landingpage während der Startphase identifizieren, können Sie entscheiden, ob ein wiedergabebezogenes Vorladen der Lib-Bibliothek durchgeführt werden soll, wodurch die Verzögerung der meisten Benutzer vermieden wird, die normalerweise zur Homepage starten. (Testgerät Redmi K40, Android12-System)
Wettbewerb um Ressourcensperren: Bevor die iQiyi-Homepage angezeigt wird, laden andere Module Layoutdateien in Unterthreads vor, was zu einem harten Wettbewerb um die Ebenensperren LayoutInfalter / ResourceManager / AssertsManager führt. Planen Sie die Aufgabe des Vorladens des Layouts so, dass sie nach der Anzeige der Homepage ausgeführt wird, und beschränken Sie die Ausführung des vorinstallierten Layouts im selben Unterthread. Sie können sehen, dass die Anzahl der Sperrkonflikte nach der Verbesserung erheblich reduziert wird, was dies ermöglicht Homepage schneller angezeigt werden.
Basisprofile
Baseline-Profile: Google wird im Jahr 2022 Baseline-Profile einführen, die es Entwicklern ermöglichen, benutzerdefinierte Hotspot-Code-Baseline-Profile in APK zu integrieren. Während der APP-Installation kompiliert das System Hotspot-Codes vorab über Konfigurationsdateien. Sie können die Schritte der Interpretation und Just-in-Time-Kompilierung der in der Laufzeit enthaltenen Codepfade überspringen, um die Geschwindigkeit der Ausführung des ersten Startcodes zu verbessern.
Startprofile: Startprofile sind eine Teilmenge der oben genannten Basisprofile. Durch die Verwendung von Startprofilen kann das Codelayout in der DEX-Datei des APK verbessert und dadurch die enthaltenen Klassen und Methoden weiter optimiert werden. iQiyi APP baut den Startphasencode über die Startkonfigurationsdatei in dieselbe DEX-Datei ein. Mit den beiden oben genannten Strategien wird die Geschwindigkeit beim ersten Start der iQiyi APP bei einigen Modellen um etwa 10 % erhöht.
Optimierung des externen Linkstarts
Das Aufrufen externer Links ist ebenfalls eine wichtige Möglichkeit zum Starten. Der Start erfolgt normalerweise über H5, Sharing, Drittanbieter-Apps usw. Der Unterschied zum normalen Kaltstart besteht darin, dass es sich bei den externen Links häufig nicht um die Startseite, sondern um ein bestimmtes Ziel handelt Seite. Das häufigste Szenario für iQiyi ist das Aufrufen der Spielseite. Wenn wir die Zielseite im Voraus identifizieren (Bewerbungsphase), können wir die Aufgabenpriorität für die Zielseite anpassen Identifizieren Sie die Wiedergabeseite im Voraus und verknüpfen Sie den Player damit. Die Aufgabe wird im Voraus initialisiert. Durch diese Strategie können Low-End-Onboard-Externlinks die Übertragung um etwa 1,5 Sekunden beschleunigen.
Optimierung der Sprachkompetenz
Die meisten Seiten der iQiyi APP basieren auf dem selbst entwickelten Card-Framework. Das Karten-Framework ist ein hochwiederverwendbares UI-Framework, das auf der Verwendung von nativem Code zur Implementierung des grundlegenden UI-Layouts und der Geschäftslogik basiert. Der grundlegende Containerstil wird durch die vom Backend ausgegebene CSS-Steuerung gesteuert, um die allgemeine Wiederverwendung des Seitenblocks zu erreichen Feinabstimmung der Inhaltsstile. Für uns ist es eine Lösung, um eine allgemeine Wiederverwendung von Seiten und eine lokale Feinabstimmung auf beiden Seiten (Android und IOS) zu erreichen. Basierend auf diesem Framework wird die Glätte der Seiten in der APP optimiert. Das Card-Framework verfügt über die folgenden Funktionen:
-
Hohe Wiederverwendbarkeit: Inhaltsblöcke (Blöcke) bestehen aus Steuerelementen, Zeilen bestehen aus mehreren Blöcken, Karten bestehen aus mehreren Zeilen und die gesamte Listenseite besteht aus mehreren Karten. Die kleinste wiederverwendbare Geschäftseinheit ist Block.
-
Hochdynamisch: Unterstützt die Konfiguration von CSS-Dateien im Hintergrund und die dynamische Änderung des Stils einer bestimmten Benutzeroberfläche (Textgröße, Farbe, abgerundete Ecken usw.).
Optimierungspraxis
Nativer Stil
Die Dynamik und Wiederverwendbarkeit der Kartenseite führen zu einer Komplexität im Layout der Benutzeroberfläche. Ein Blocktyp muss mit mehreren Stilen kompatibel sein. Beispielsweise müssen die vier Ecken eines Bildes mit verschiedenen Arten von Indexlogik eingebettet werden. Zu den Indextypen gehören reine Bilder, einfacher Text, Bilder + Text und optional mittlere Form. Die Implementierung verschiedener Stile führt zu einer großen Anzahl von Ansichten und tiefen Verschachtelungsebenen, wodurch einige Seiten nicht glatt genug sind, um auf Low-End-Rechnern zu gleiten.
Um diese Situation zu optimieren, wurden einige Karten mit stabilen Geschäftsformen ausgewählt, der Stil dieser Karten gefestigt und das Layout stark gestrafft. Dies führt zu einer deutlichen Erhöhung der Bildrate beim Auf- und Abgleiten. In der Wasserfall-Flow-Karte haben wir beispielsweise die Anzahl der implementierten Ansichten von 40+ auf 17 reduziert und die Layoutebene auf verschiedenen Low-End-Maschinen von 6 auf 2 Ebenen reduziert, was zu einem Gleitrahmen von etwa 10 % bis 20 % führte Rate erhöht .
Zusammenführungszeichnung anzeigen
Der Verbesserungseffekt, der durch die obige Strategie zur Vereinfachung des Layouts erzielt wird, ist offensichtlich, aber aufgrund der Diversifizierung der Geschäftsformen können einige notwendige Ansichten nicht gelöscht werden. Um die Anzahl und Ebene der Ansichten weiter zu reduzieren, werden mehrere Ansichten in häufig verwendeten Blocklayouts zu einer benutzerdefinierten Ansicht zusammengeführt und die Leinwand der Ansicht wird zum Zeichnen von Text, Bildern, Schaltflächen und anderen Stilinformationen verwendet. Diese Methode kann die Anzahl der Ansichten und Verschachtelungsebenen effektiv reduzieren, muss jedoch weiterhin das Klickereignis und den Druckeffekt jedes Elements verarbeiten. Auf Low-End-Geräten kann diese Strategie zu einer gleitenden Bildratensteigerung von etwa 1 bis 2 Bildern pro Sekunde führen .
Vorerstellung und asynchrones Laden
Layout-Vorerstellung: Unter den drei im Bild oben vorgestellten Kartenstilen wird derselbe Blocktyp verwendet (Bild oben und unten). Wir laden diese häufig verwendeten und hoch wiederverwendbaren Blocklayouts während der Startphase vorab in den Cache-Pool, sodass die vorab erstellten Layouts direkt beim Listengleiten verwendet werden können, wodurch die Aufblaszeit beim UI-Zeichnen verkürzt wird.
Asynchrone Layouterstellung : Die Vorerstellung hat einen guten Effekt auf häufig verwendete Layouts, aber ungewöhnliche Layouts machen immer noch den Großteil dieser Art von Layout aus Scroll-Layout im UI-Thread. Gleichzeitig kann es auch die Effizienz des RecyclerView-Vorabrufs verbessern.
RecyclerView-Vorabruf: Viele iQiyi-APP-Seiten verwenden verschachtelte RecyclerView, um horizontal scrollende Produktformulare zu erstellen. Je nach Formular werden unterschiedliche Vorabrufeinstellungen festgelegt (setInitialPrefetchItemCount, Standardwert ist 2). kann die Verzögerung verringern, wenn dieser Kartentyp freigelegt wird.
Der Haupt-Thread reduziert die Ausführung von Nicht- UI- Aufgaben : Es dauert einige Zeit, den Haupt-Thread während des Scrollvorgangs zu erkennen. Es wurde festgestellt, dass einige Nicht-Zeichnungs-Aufgaben im Haupt-Thread ausgeführt werden. Der UI-Thread analysiert JSON und stellt Datenbankverknüpfungen her usw. und fügt sie zur Ausführung in asynchrone Aufgaben ein.
Planung von Kaltstart-UI-Nachrichten
Während des Kaltstartvorgangs von Low-End-Maschinen erreicht der Ressourcenverbrauch nach und nach einen Spitzenwert. Es gibt eine große Anzahl von UI-Nachrichten (die im UI-Thread ausgeführt werden müssen) und andere Hintergrundaufgaben, die ausgeführt werden müssen. Durch Abfangen und Analyse vergrabener Punkte müssen zu diesem Zeitpunkt mehr als 4.000 Nachrichten (innerhalb von 15 Sekunden) im UI-Thread ausgeführt werden. Die Ausführungszeit dieser Nachrichten liegt auf Low-End-Maschinen zwischen 1 ms und 150 ms. Wenn diese Nachrichten ausgeführt werden, verzögert sich die Darstellung der Benutzeroberflächennachrichten des Systems. Auf Low-End-Computern treten beim ersten Start der APP Probleme wie Verzögerungen und langsame Klickreaktionen auf.
Um dieses Problem zu lösen, besteht unsere Lösung darin, alle an den UI-Thread gesendeten Nachrichten abzufangen und sie einer benutzerdefinierten Nachrichtenwarteschlange hinzuzufügen. Anschließend überwachen wir, ob die System-UI-Nachrichtenwarteschlange inaktiv ist, und nehmen im Leerlauf Nachrichten aus der benutzerdefinierten Warteschlange heraus und leiten sie um Sie werden der Nachrichtenwarteschlange des Systems hinzugefügt. Darüber hinaus wird ein Whitelist-Mechanismus hinzugefügt, um einige hochwertige Nachrichten freizugeben. Für die Behandlung von Ausnahmen gibt es einen Fallback-Mechanismus.
Durch die Planung von UI-Nachrichten wurde die Verzögerung von Low-End-Maschinen während der Kaltstartphase deutlich verbessert; durch Online-Big-Data-Überwachung wurde die Anzahl eingefrorener Frames und ausgelassener Frames deutlich reduziert. Während der Kaltstartphase wird die Bildrate um ca. 8fps erhöht .
Strategie zur Leistungsverschlechterung
Auf Low-End-Maschinen kann das Downgrade einiger Effekte die Verzögerung in bestimmten Szenarien effektiv reduzieren. iQiyi APP hat die folgende Downgrade-Strategie implementiert.
Herabstufung der Bewegungseffekte: Bewegungseffekte der Navigation oben und unten auf statische Bilder herabgestuft, Bewegungseffekte der Wiedergabesteuerung deaktiviert, Bewegungseffekte für einige Produktfunktionen vereinfacht usw.
Herabstufung der Wiedergabe: Strategien wie das Fortsetzen der verzögerten Wiedergabe und das Nichtstarten einiger Szenen.
Downgrade des ViewPager-Vorladens: Deaktiviert das Vorladen der linken und rechten Registerkarten, wodurch die Zeit zum Zeichnen der Ansicht und der Speicheraufwand reduziert werden.
Bild-Downgrade: Einige Seitenanimationen werden nicht abgespielt und die Bilder verwenden das 565-Pixel-Format.
Optimierung der Ladegeschwindigkeit
Neben der oben genannten Startup-Optimierung konzentrieren wir uns auch auf die Optimierung einiger wichtiger Seiten, da diese Seiten sehr häufig von Benutzern besucht werden und ihre Optimierung das Benutzererlebnis erheblich verbessern kann. Beispielsweise ist die Suche eine der von Benutzern häufig verwendeten Funktionen. Daher haben wir das Suchverhalten sorgfältig analysiert und jeden Schritt der Suche optimiert.
Optimierungspraxis
Vorabanfrage
Normalerweise beginnt der Seitenrenderingprozess mit der onCreate-Methode der Aktivität. Stellen Sie dann eine Netzwerkanfrage, um die erforderlichen Daten zu erhalten. Nach Erhalt der spezifischen Daten wird die Seite gerendert. Wir haben diesen Vorgang auch im vorherigen Suchszenario verfolgt.
Ist es möglich, die benötigten Daten vorab zu erhalten?
Tatsächlich verfügt der Benutzer, wenn er auf der Startseite auf das Suchfeld klickt, bereits über die für die Netzwerkanfrage erforderlichen Parameter. Dann können Sie beim Klicken vorab eine Netzwerkanfrage initiieren. Die Netzwerkanfrage und der Seitensprung werden gleichzeitig ausgeführt, was die Netzwerkanfragezeit verkürzt. Wenn die Maschinenleistung schlechter ist, dauert es länger, bis die Seite auf die onCreate-Methode klickt, und desto länger dauert die Optimierung. Die Überprüfungszeit auf Low-End-Maschinen wird um etwa 200 ms verkürzt.
Wird in Chargen ausgegeben
Wenn der Benutzer die Seite betritt, werden nur die Daten des ersten Bildschirms angezeigt, während die Daten am unteren Rand der Seite erst angezeigt werden können, wenn der Benutzer einen Schiebevorgang ausführt. Daher legen wir Wert darauf, die Anzeige von Daten auf dem ersten Bildschirm sicherzustellen. Durch die Reduzierung der Größe der ersten Datenlieferung reduzieren wir den Zeitaufwand für die Datenerfassung, Datenübertragung und Datenanalyse. Nachdem das Rendern der ersten Bildschirmdaten abgeschlossen ist, initiieren wir erneut eine Schnittstellenanforderung, um sicherzustellen, dass nachfolgende Daten sofort angezeigt werden können, wenn der Benutzer einen Schiebevorgang ausführt. Diese Lösung wird zur Optimierung auf vielen wichtigen Seiten wie der Startseite, der Half-Play-Seite und der Suche verwendet. Wenn diese Lösung beispielsweise im Suchszenario verwendet wird, wird die Überprüfungszeit um etwa 200 ms verkürzt.
vorgefertigt
Voraberstellung des Layouts: Wenn die Suchzwischenseite inaktiv ist, erstellen wir vorab hochgradig wiederverwendbare Layouts im Cache. Wenn die Seite tatsächlich gerendert wird, wird das vorab erstellte Layout direkt verwendet, um die Zeit für das Aufblähen der Ansicht zu vermeiden.
Fragment-Vorerstellung: Wenn die Suchzwischenseite inaktiv ist, wird der Fragmentcontainer der Ergebnisseite im Voraus erstellt. Es ist nicht erforderlich, den entsprechenden Container zu erstellen, wenn die Ergebnisseite angezeigt wird, wodurch die für die Erstellung des Containers erforderliche Zeit verkürzt wird.
Haupt-Thread-Optimierung
Wenn die Seite geladen wird, wird gehofft, dass die mit der Seite verbundenen Haupt-Thread-Aufgaben so weit wie möglich zuerst ausgeführt werden . Wenn die wichtige Aufgabenplanung vorweggenommen wird, wird der Seitenrendering-Effekt beeinträchtigt. Durch unser internes selbst entwickeltes Tracepeed-Tool, das Looper.loop() des Hauptthreads übernimmt, können wir die zeitaufwändigen Aufgaben im Hauptthread entdecken. Wenn Sie feststellen, dass Aufgaben mit niedriger Priorität, die viel Zeit in Anspruch nehmen, zuerst ausgeführt werden, können Sie den Aufgabenplan so anpassen, dass wichtige Aufgaben zuerst ausgeführt werden.
Während des Ladevorgangs der Suchergebnisseite ist beispielsweise das Laden von Bildern eine wichtige Aufgabe. Auf Low-End-Rechnern wird jedoch festgestellt, dass in manchen Fällen eine andere Aufgabe den Haupt-Thread vorwegnimmt, was dazu führt, dass das Laden des Bilds manchmal bis zu 1 Sekunde dauert. Passen Sie für dieses Szenario die Aufgabenplanung so an, dass die Bildladeaufgabe zuerst ausgeführt wird und sich der Zeitverbrauch auf 100+ms stabilisiert.
Optimierung der Geschäftslogik
Für verschiedene Unternehmen haben wir außerdem die spezifische Geschäftslogik analysiert und die entsprechende Logik optimiert:
-
Optimierung leerer Bilder: Wenn die Auswahl geladen wird, liefert das Backend in einigen Szenarien ein leeres Bild und dieses leere Bild wird ebenfalls geladen, was die Ladezeit der Seite erhöht. Daher begrenzen wir das Laden leerer Bilder.
-
Optimierung der Hochfrequenzlogik: Bei der Optimierung sind Hochfrequenzmethoden ein Punkt, auf den man sich konzentrieren muss. Durch die Optimierung einiger häufig verwendeter Hochfrequenzmethoden kann der Zeitverbrauch jeder Seite optimiert werden. Beispielsweise wird bei der Initialisierung grundlegender Steuerelemente die Ausführung nutzloser Methoden vermieden und der Zeitaufwand solcher Hochfrequenzmethoden verringert.
-
Asynchrone Ausführung zeitaufwändiger Methoden: Während des Seitenladevorgangs gibt es auch einige Geschäftslogiken mit niedriger Priorität. Wenn diese Logiken erkannt werden, können sie über das asynchrone Framework ausgeführt werden, wodurch die Seitenladezeit verkürzt wird.
Anti-Verschlechterung
Nach kontinuierlicher Optimierung hat die Seitenladezeit ein stabiles Niveau erreicht. Während der laufenden Entwicklungsiterationen stellten wir jedoch einen gewissen Anstieg des Zeitverbrauchs fest. Wie lässt sich eine solche Verschlechterung wirksam verhindern?
Durch die Einbettung von Schlüsselmethoden in den Code werden die Pipeline-Aufgaben regelmäßig jeden Tag ausgeführt und der Durchschnittswert nach mehreren Ausführungen berechnet. Verwenden Sie visuelle Methoden, um Schwankungen beim Laden der Seite zu erkennen. Wenn es zu einer Verschlechterung kommt, können Sie den Unterschied im Zeitaufwand zwischen den beiden Aufgaben durch einen Aufgabenvergleich intuitiv ermitteln und den Unterschied im Zeitaufwand analysieren und optimieren.
Zusammenfassung und Ausblick
Die Optimierung von Low-End-Maschinen umfasst viele Aspekte, die in mehreren Kerngeschäftsszenarien vorgestellt werden, und priorisiert wichtige Leistungsprobleme und verbessert effektiv die Betriebsleistung von Low-End-Maschinen. Dazu gehören Werkzeuganalyse, Online-Überwachung und Messstandards Hier nicht erwähnt, handelt es sich hierbei ebenfalls um wichtige Werkzeuge zur Leistungsoptimierung. Android ist stark fragmentiert und es ist noch ein langer Weg, um Low-End-Telefone zu optimieren. Auch in Zukunft werden wir uns weiter verfeinern und neue Durchbruchspunkte für die Optimierung finden, technologische Innovationen nutzen, um Benutzern ein stabiles und reibungsloses Benutzererlebnis zu bieten, und ein qualitativ hochwertiges Wachstum fördern.
Dieser Artikel wurde vom öffentlichen WeChat-Konto geteilt – iQIYI Technology Product Team (iQIYI-TP).
Bei Verstößen wenden Sie sich bitte zur Löschung an [email protected].
Dieser Artikel ist Teil des „ OSC Source Creation Plan “. Alle, die ihn lesen, sind herzlich eingeladen, mitzumachen und ihn gemeinsam zu teilen.