Langsame Software

Vom Übersetzer: Das Problem der langsamen Software ist in den letzten Wochen zu einem der Hauptdiskussionsthemen bei HabrĂ© und Hacker News geworden. Siehe zum Beispiel Nikita Prokopovs Artikel „Meine EnttĂ€uschung in der Software“ und 2432 Kommentare dazu.

Wir verbringen viel Zeit am Computer. Wir warten jedes Mal, wenn Sie Anwendungen starten und Webseiten laden. Überall gibt es Spinner- oder Sanduhrsymbole. Eisen wird immer leistungsfĂ€higer, aber Software scheint immer noch langsam zu sein. Warum so?

Wenn Sie einen Computer fĂŒr wichtige Arbeiten verwenden, verdienen Sie schnelle Software. Moderne Software erfĂŒllt diese Anforderungen zu oft nicht. Im Ink & Switch-Forschungslabor haben wir die GrĂŒnde fĂŒr diese Situation untersucht. Die Software wurde schließlich besser. Dieser Artikel veröffentlichte die Ergebnisse unserer Studie.

Inhaltsverzeichnis



Wo genau ist die Langsamkeit


Was wird von Benutzern als „langsames“ Programm wahrgenommen? Manchmal nervt uns Software alle mit Verzögerungen und Verzögerungen. Um diese Probleme besser zu verstehen, sollten intuitive Empfindungen durch akademische Studien ergĂ€nzt werden, die diese Frage streng beantworten.

Die wahrgenommene Geschwindigkeit hĂ€ngt eng mit dem Konzept der Latenz zusammen. Ein Vergleich der wissenschaftlichen Forschung zu „was langsam zu sein scheint“ mit der Messung der tatsĂ€chlichen Verzögerung in diesen Anwendungen macht deutlich, wie schlecht alles ist.

Verzögerung ist keine Bandbreite


Wenn wir ĂŒber die Softwareleistung sprechen, hören wir oft etwas ĂŒber die Bandbreite. Beispiel: "Dieser Webserver kann 10.000 Anforderungen pro Sekunde ausfĂŒhren." Aber so nehmen Benutzer Dinge nicht wahr. Sie kĂŒmmern sich darum, wie lange ihre spezielle Webanforderung dauert oder wie lange es dauert, ein Dokument zu öffnen, oder wie schnell die Anwendung auf einen Mausklick reagiert. Diese Interaktionen sind mit Latenz verbunden. Verzögerung ist eine wichtige Metrik, die wir in diesem Artikel untersuchen werden.

Benutzerwahrnehmung
Weitere Informationen zur Bedeutung der Latenz in interaktiven Systemen finden Sie hier .

Andere Faktoren beeinflussen das GefĂŒhl der Softwaregeschwindigkeit. Zum Beispiel Bildrate und Feedback bei langen Aufgaben. Wir glauben jedoch, dass die Latenz eine grundlegende MessgrĂ¶ĂŸe ist und dass sich jede Software bei sehr geringer Latenz extrem schnell anfĂŒhlt.

Touch-Schnittstellen


Betrachten Sie zunĂ€chst die Empfindlichkeit des Menschen gegenĂŒber Verzögerungen auf dem Touchscreen.

Forscher ĂŒberprĂŒfen dies mit Tests, die genau bestimmen, welche Verzögerung Benutzer wahrnehmen. Zuerst wird den Probanden eine Schnittstelle angeboten, die (sagen wir) eine Verzögerung von 1 ms und dann (sagen wir) 70 ms hat, und sie wird aufgefordert, Operationen wie das DrĂŒcken einer Taste auszufĂŒhren. Wenn die 70-ms-Schnittstelle durchweg schlechtere Ergebnisse zeigt als die 1-ms-Schnittstelle, werden 70 ms als „wahrnehmbarer Unterschied“ bezeichnet.

Minimaler spĂŒrbarer Unterschied
Weitere Einzelheiten zum minimalen spĂŒrbaren Unterschied in der Verzögerung und den damit verbundenen experimentellen Einrichtungen finden Sie beispielsweise in dieser Arbeit .

Der minimale spĂŒrbare Unterschied ist das Budget, nach dem sich ein bestimmter Vorgang fĂŒr den Benutzer langsam anfĂŒhlt.

Wenn Benutzer beispielsweise Elemente auf den Bildschirm ziehen, nehmen sie Verzögerungen von nur ~ 2 ms wahr. Die am wenigsten wahrnehmbare Verzögerung hĂ€ngt vom Benutzer und der ausgefĂŒhrten Aktion ab, ist jedoch immer sehr gering.

Wahrnehmung von Drag & Drop
Wahrnehmungsbericht 2-16 ms beim Ziehen mit einem Stift .
2-11 ms beim Ziehen mit einem Finger .
Durchschnittlich 11 ms beim Ziehen mit dem Finger .

Ähnliche Ergebnisse wurden beim Zeichnen mit einem Stift auf einer Tablette erhalten. Hier schlugen Forscher vor, dass Benutzer eine Verzögerung von 20 bis 80 ms bemerken. In unseren eigenen inoffiziellen Tests wird eine Verzögerung von etwa 80 ms als sehr auffĂ€llig angesehen, und es dauert viel nĂ€her an 20 ms, bis der Stift wĂ€hrend der Handschrift anspricht.

Wahrnehmung der Stiftverzögerung
Bericht ĂŒber die Wahrnehmung einer Verzögerung von 10 - 70 ms beim Schreiben mit einem Stift .
21–82 ms fĂŒr verschiedene Aktionen mit dem Stift .

Der Unterschied zwischen niedriger und hoher Handschriftlatenz ist beim Vergleich offensichtlich:

Links: iPad Pro und Notes App mit einer End-to-End-Latenz von ca. 15 ms. Rechts: Samsung S3 und OneNote App mit einer Verzögerung von ca. 70 ms. Video ist 16 mal langsamer.

Eine andere typische Operation auf Touch-GerĂ€ten ist das Klicken auf SchaltflĂ€chen oder Links. Hier haben die Tests festgestellt, dass Benutzer eine Verzögerung um die Wende von 70 ms bemerken (obwohl sie fĂŒr einige einzelne Benutzer wahrscheinlich geringer ist).

Wahrnehmung der Bildschirmverzögerung
Diese Studie ergab eine durchschnittliche minimale unterscheidbare Verzögerung von 69 ms.

Hier ist ein Beispiel, in dem zwei verschiedene Verzögerungen verglichen werden:

Links: Öffnen der Registerkarte "Einstellungen" auf dem iPhone 6s mit einer Verzögerung von ca. 90 ms. Rechts: Umschalten der Einstellungen beim Samsung S3 mit einer Verzögerung von ca. 330 ms. Video ist 16 mal langsamer.

Wie erfĂŒllen moderne Anwendungen diese Schwellenwerte? Wenn wir ĂŒber Drag & Drop sprechen, kann kein kommerzielles System einer Verzögerung von mehreren Millisekunden entsprechen, um alle Verbraucher zufrieden zu stellen.

Drag & Drop-Leistung
Wie wir weiter unten sehen werden, passen selbst Displays und GerÀte zur Dateneingabe nicht in das Budget von 10 ms, ganz zu schweigen von mehreren Softwareschichten.

Wenn Sie also alle aktuellen Betriebssysteme mit einem Touchscreen verwenden, haben zumindest einige Benutzer das GefĂŒhl, dass sich das Objekt beim Ziehen und Ablegen hinter Ihrem Finger befindet.

Beim Zeichnen mit einem Stift nÀhert sich eine kleine Anzahl von Systemen einer akzeptabel geringen Verzögerung. Die meisten von ihnen sind jedoch viel höher als diese Werte, was von den Benutzern als erhebliche Verzögerung erwartet wird:

Nachfolgend finden Sie die Ergebnisse der Ink & Switch-Tests zur Verzögerung beim Zeichnen mit dem Stift auf dem Tablet fĂŒr verschiedene GerĂ€te. Die durchschnittlichen Verzögerungen, gemessen vom Kontakt mit dem Bildschirm bis zum Beginn der FarbĂ€nderung des entsprechenden Pixels, werden auf die nĂ€chsten 5 ms gerundet.

GerÀtDas ProgrammVerzögerung (ms)
iPad ProAnmerkungen20
Goodnotes30
Flattern35
Surface ProOneNote25
Skizzenblock30
Leinwand60
PixelbookTintenfisch40
Leinwand60
Samsung s3Tintenfisch60
Flattern65
Leinwand75
Liveboard80

Obwohl wir nicht fĂŒr alle GerĂ€te Daten zu Verzögerungen haben, gehen wir davon aus, dass diese mit den oben beobachteten Verzögerungen beim Zeichnen von Stiften vergleichbar sind.

Zeichnen Sie Verzögerungen gegenĂŒber Klickverzögerungen
Wir erwarten, dass diese Verzögerungen vergleichbar sind, da in beiden FĂ€llen die BerĂŒhrungseingabe verwendet wird, dh der Bildschirmaktualisierungszyklus aktiviert wird. Es gibt jedoch einige Unterschiede, sodass es unwahrscheinlich ist, dass die Werte genau gleich sind.

Da hier eine Verzögerung von ca. 70 ms erkennbar ist, können die meisten Systeme gut auf Klicks reagieren. Es ist aber auch einfach, Anwendungen zu finden, die viel schlechter funktionieren als die theoretischen FÀhigkeiten des Systems.

Im Allgemeinen mĂŒssen sensorische Systeme sehr geringe Latenzen aufweisen, damit sie sich ansprechbar fĂŒhlen. Die meisten GerĂ€te und Anwendungen sind nicht in der Lage, dieses Leistungsniveau bereitzustellen, und daher fĂŒhlen sich alle fĂŒr Benutzer in unterschiedlichem Maße langsam an.

Tastatur


Es gibt Hinweise darauf, dass eine Erhöhung der Tipplatenz die Benutzererfahrung beeintrÀchtigt.

Effekt der Eingangsverzögerung
In dieser Studie wurden den TastenanschlĂ€gen zufĂ€llige Verzögerungen hinzugefĂŒgt, wodurch die Eingabeleistung verringert wurde. Es wurde jedoch nur ein Bereich von Verzögerungen bewertet. DarĂŒber hinaus schlagen die Autoren der Studie vor, dass erfahrene Schriftsetzer sich an eine erhöhte Latenz anpassen können.

Uns sind jedoch keine Studien bekannt, in denen speziell die am wenigsten wahrnehmbaren Eingangsverzögerungen gemessen werden. Die Verzögerung beim DrĂŒcken des Touchscreens (erkennbar bei etwa 70 ms) kann eine nĂŒtzliche Anleitung sein, da sie auch die Zeit zwischen einer diskreten BerĂŒhrung eines Fingers und einer visuellen Aktualisierung des Bildschirms misst.

Im Folgenden finden Sie einige informelle Messungen der End-to-End-Tastaturverzögerung vom Beginn eines Tastenanschlags bis zum Auftreten eines Zeichens auf verschiedenen Computern. Quellen: „Computerlatenz: 1977–2017“ , Ink & Switch-Tests.

ComputerVerzögerung (ms)
Apple iie30
Commodore Pet 401660
iMac g4 OS 970
Macbook Pro 2014100
Benutzerdefinierte Haswell-e 24Hz140
Samsung s3150
Powerspec g405 Linux170
Symbolik 3620300

Genaue Messungen der Auswirkungen der Tastaturlatenz wĂ€ren ein großartiges Experiment fĂŒr abenteuerlustige Forscher. In jedem Fall scheint es wahrscheinlich, dass fĂŒr viele Benutzer der Schwellenwert fĂŒr eine spĂŒrbare Verzögerung beim Eingeben ĂŒber die Tastatur unter 100 ms liegt. Vielleicht viel niedriger.

Eine Maus


Der neueste Typ von EingabegerÀten in unserem Test. Ein Experiment ergab, dass Benutzer eine Mauslatenz im Bereich von 34 bis 137 ms mit einem Durchschnitt von 65 ms wahrnahmen.

Verschiedene MĂ€use haben sehr unterschiedliche Verzögerungswerte. Einige Systeme zeigen Werte von weniger als 10 ms an, indem sie HochleistungsgerĂ€te mit sorgfĂ€ltiger Programmierung auf niedriger Ebene kombinieren ( dies beschreibt die Installation mit einer Verzögerung von ca. 8 ms). DarĂŒber hinaus können Sie bei einer Kombination aus mittelmĂ€ĂŸigen GerĂ€ten und Anwendungen, die zusĂ€tzliche Verzögerungen oder Puffer zwischen Maus und Display verursachen, ĂŒber 100 ms hinausgehen.

Anwendungen


Verzögerungen auf Anwendungsebene messen, wie lange es dauert, bestimmte Anwendungsaktionen auszufĂŒhren, z. B. das Laden von Webseiten. Ein Beispiel fĂŒr eine solche Verzögerung ist das Laden der NYTimes-Webseite, was ungefĂ€hr 3000 ms dauert.


Wann scheinen App-Aktionen schnell zu sein? Es ist schwer sicher zu sagen, da ihre Aktionen komplexer und vielfÀltiger sind als die einfache Dateneingabe. Wahrscheinlich hÀngt die Antwort auch von den Erwartungen der Benutzer ab (derzeit arbeiten die Leute normalerweise mit langsamer Software). Aber wir können die ungefÀhre Anzahl berechnen.

Literatur verzögern
Siehe die LiteraturĂŒbersicht ĂŒber die Auswirkungen von Verzögerungen auf Benutzer verschiedener Anwendungen. Dies ist ein guter Ausgangspunkt fĂŒr ein tieferes Eintauchen in das Thema.

Einer der Referenzwerte ist eine typische 70-ms-Metrik als die am wenigsten sichtbare Verzögerung, die oben erwĂ€hnt wurde, wenn Sie auf den Bildschirm klicken. Wenn Sie eine Verzögerung zwischen dem Klicken auf einen Link und dem Anzeigen einer Klickanzeige feststellen, sollten Sie eine Ă€hnliche Verzögerung zwischen dem Klicken und dem Öffnen einer Webseite feststellen.

Eine weitere Referenz ist das Google RAIL- Entwicklermodell. Obwohl die Autoren dieses Modells ihre Behauptungen in keiner Weise begrĂŒnden, behauptet das Modell, dass sich die Antwort innerhalb von 100 ms „augenblicklich anfĂŒhlt“ und die höhere Verzögerung „die Verbindung zwischen Aktion und Reaktion unterbricht“.

Sie können inoffiziell Ihre eigene Empfindlichkeit im Terminal ĂŒberprĂŒfen. Nehmen Sie Ihre bevorzugten Befehlszeilenprogramme und fĂŒhren Sie sie mit dem Parameter 'time' aus, der die AusfĂŒhrungszeit misst. Beachten Sie sicherlich den Unterschied zwischen den Antworten fĂŒr 15 ms (ausgezeichnet!) Und 500 ms (offensichtlich langsam).



Als letzten Bezugspunkt berĂŒcksichtigen wir, dass eine typische menschliche Reaktionszeit auf einen visuellen Reiz etwa 220 ms betrĂ€gt .

Dieser Wert ist viel grĂ¶ĂŸer als eine merkliche Verzögerung, da die Reaktion nicht nur die Beobachtung, sondern auch die nachfolgende Aktion umfasst.

Es ist auch notwendig, die Schlussfolgerungen einiger Forscher zu berĂŒcksichtigen, dass eine Person eine Zunahme der Verzögerung auf unbewusster, physiologischer Ebene wahrnehmen kann.

Echte Anwendungen


Wie passen echte Anwendungen zu diesen Richtlinien? Einige kommen zurecht. Beispielsweise werden viele Unix-Befehlszeilenprogramme schneller als 100 ms ausgefĂŒhrt.

Die meisten Internetanwendungen sind jedoch nicht verfĂŒgbar. Eine Google-Suche in etwa 1000 ms ist viel schneller als die meisten Webanwendungen, aber immer noch merklich langsamer als weniger als 100 ms in der Befehlszeile. Und es ist einfach, Beispiele fĂŒr Seiten zu finden, die selbst bei einer guten Verbindung lĂ€nger als 5000 ms geladen werden.

Bei Mobil- und Desktop-Computern gibt es einige Anwendungen, die durchweg eine Verzögerung von weniger als 100 ms aufweisen, z. B. einen integrierten Rechner unter iOS. Es ist jedoch einfach, Beispiele fĂŒr Anwendungen zu finden, die diesen Schwellenwert bei weitem ĂŒberschreiten, selbst wenn alle Daten lokal verfĂŒgbar sind (oder sein sollten). Betrachten Sie das Slack-Beispiel.

Das folgende Video zeigt, dass das Umschalten zwischen zwei KanÀlen mit geringer LautstÀrke im selben Arbeitsbereich auf dem iPad Pro etwa 220 ms dauert, obwohl keine Netzwerkanrufe erforderlich sind. Das iPad Pro ist wohl das leistungsstÀrkste MobilgerÀt der Welt (Video wird um das Achtfache verlangsamt) ):


Es ist schwierig, fĂŒr alle Programme in einem so umfangreichen Bereich wie der Verzögerung von Maßnahmen eine allgemeine Schlussfolgerung zu ziehen. Es scheint jedoch offensichtlich, dass einige Anwendungen Aktionen schnell genug ausfĂŒhren und fĂŒr Benutzer augenblicklich erscheinen (weniger als 100 ms), viele Anwendungen jedoch nicht.

Woher kommt die Verlangsamung?


Daher haben wir festgestellt, dass viele Programme tatsÀchlich langsam arbeiten. Wohin geht die ganze Zeit und was können wir optimieren? Betrachten Sie dieses Problem, beginnend mit der ersten Komponente in der Kette: EingabegerÀte.

EingabegerÀt


Der erste Schritt in der Pipeline, der die physischen Eingabedaten in Aktualisierungen auf dem Bildschirm umwandelt, ist die Verarbeitung der Eingabedaten: Umwandlung des Kontakts mit dem Touchscreen, der Tastatur oder der Maus in ein digitales Signal fĂŒr das Betriebssystem. Hier sehen wir uns an, wie lange dieser Schritt dauert.

Beginnen wir mit den Tastaturen. Die Tabelle zeigt die gemessenen Verzögerungen vom Beginn eines Tastenanschlags bis zu einem Signal auf einem USB-Hub, aufgerundet auf 5 ms ( Quelle ).

TastaturVerzögerung (ms)
Apfelzauber15
Das 325
Kinesis freestyle230
Ergodox40
Kinesis Vorteil50
Logitech MK36060

Wie Sie sehen können, benötigen diese Tastaturen bereits im ersten Schritt der Verarbeitungspipeline einige zehn Millisekunden Zeit fĂŒr das Budget. Dies ist ab einem Gesamtbudget von 100 ms oder weniger! Dieses Thema wird im Artikel „Drucken mit VergnĂŒgen“ ausfĂŒhrlicher behandelt.

MĂ€use benötigen ebenfalls mehrere zehn Millisekunden aus dem Budget. Obwohl die leistungsstĂ€rksten Gaming-MĂ€use eine Verzögerung von weniger als 10 ms haben. Die Daten zur Reaktion auf das DrĂŒcken variieren, auch hier zeigen einzelne Instanzen ein Ergebnis von weniger als 10 ms ( Beispiel ).

Bei mobilen GerÀten ist es schwieriger, den Anteil der Verzögerung zu messen, der auf EingabegerÀte fÀllt, da diese eng in andere Hardwarekomponenten integriert sind. Wir können jedoch einige der gÀngigen Muster in der Ausstattung von EingabegerÀten verwenden, um deren Verzögerungen zu bewerten, sowie eigenstÀndige GerÀte.

Abtastrate


Ein hĂ€ufiges Muster ist die Abtastrate. Bei vielen EingabegerĂ€ten werden GerĂ€te in regelmĂ€ĂŸigen AbstĂ€nden „gescannt“ oder „abgetastet“. Beispielsweise arbeitet ein typischer Consumer-Touchscreen mit einer Frequenz von 60 Hz, dh er fragt Sensoren ungefĂ€hr alle 17 ms ab. Dies bedeutet, dass im schlimmsten Fall die Verzögerung des EingabegerĂ€ts mindestens 17 ms und im Durchschnitt nicht mehr als 8 ms betrĂ€gt.

Wenn alle Dinge gleich sind, verringert eine höhere Abtastrate die Eingangsverzögerung. Die fortschrittlichen Touchscreens und Stifte von Apple arbeiten beispielsweise mit Frequenzen ĂŒber 60 Hz (Informationen aus dem Apple-Dokumentationsarchiv ).

GerÀtTouchscreen (Hz)Stift (Hz)
iPhone 660
iPhone 760
iPhone 860
iPhone X.120
iPad Air 260
iPad Mini 460
iPad Pro120240

Eine Ă€hnliche Verzögerungsquelle ist das USB-Polling. Das USB-Protokoll empfĂ€ngt Eingaben von der Tastatur, sodass die Tastatur auf eine USB-Abfrage warten muss, um Informationen zu Klicks zu senden. Die langsame USB-Abfrage lĂ€uft mit 125 Hz und fĂŒhrt die unvermeidlichen max. 8 ms ein. und ~ 4 ms durchschnittliche Verzögerung. SpĂ€tere Versionen des USB-Scans mit einer Frequenz von 1000 Hz oder mehr minimieren den Verzögerungseffekt.

Es gibt viele andere mögliche Verzögerungsquellen bei EingabegerĂ€ten, z. B. Kontaktsprung (weitere Informationen finden Sie im Artikel „Scannen der Tastaturmatrix und Kontaktsprung“ zu den Software- und Hardwareeffekten von Bounce).

Wir werden hier nicht alle diese Nuancen berĂŒcksichtigen, aber wir betonen die wichtigsten: a) EingabegerĂ€te selbst können eine erhebliche Verzögerung verursachen, bevor eine Verarbeitung in der Software erfolgt; b) Dies kann verschiedene diskrete GrĂŒnde haben, und die Verzögerungszeit wird addiert.

Displays und GPUs


Die Hardware am anderen Ende des Förderers sind Displays und Grafikkarten.

Eine Verzögerungsquelle ist hier die Anzeigebildrate. Da Anzeigen nicht stĂ€ndig neu gezeichnet werden können, fĂŒhrt dies zu einer unvermeidlichen Verzögerung, Ă€hnlich wie bei den oben beschriebenen AbfrageeingabegerĂ€ten. Wenn der Bildschirm alle 20 ms aktualisiert wird (z. B.), werden im schlimmsten Fall 20 ms Verzögerung und durchschnittlich 10 ms hinzugefĂŒgt.

Bewegungswahrnehmung
Andere Faktoren beeinflussen unsere Wahrnehmung von Objekten, die sich auf dem Bildschirm bewegen. Blur Busters ist eine hervorragende Ressource zu diesem Thema. Siehe beispielsweise LCD-Bewegungsartefakte 101 .

Die meisten Displays arbeiten mit 60 Hz, obwohl professionelle GerÀte und Gaming-Displays mit 120 Hz, 144 Hz und 240 Hz arbeiten. Daher erhöht normalerweise nur die Anzeigebildrate die Verzögerung um durchschnittlich etwa 8 ms, obwohl sie bei Anzeigen mit der höchsten Bildrate auf einige Millisekunden reduziert werden kann.

Ein weiterer Beitrag zur Verzögerung von Anzeigen ist die Zeit, die benötigt wird, um die Farbe der Pixel nach dem Empfang neuer Daten physikalisch zu Àndern. Diese Zeit variiert von einigen Millisekunden in High-End-Gaming-Displays bis zu zweistelligen Werten in weniger reaktionsschnellen LCDs.

Antwortzeit anzeigen
Dieser Parameter ist schwer zu messen, aber einige veranschaulichende Daten sind auf der Notebook Check- Website verfĂŒgbar. Siehe zum Beispiel langsame und schnelle Anzeigen.

Bei modernen High-End-GerĂ€ten ist das Display an einen speziellen Grafikprozessor (GPU) angeschlossen. GPUs erstellen eine Reihe von Pixeln fĂŒr die Anzeige, indem sie beispielsweise 2D-Ebenen anordnen oder virtuelle 3D-Szenen rendern. GPUs erzeugen Frames mit einer Geschwindigkeit, die von der GPU-Hardware, der Interaktion mit dem Anwendungs- und Plattformcode und manchmal von der Synchronisationslogik mit Anzeigen abhĂ€ngt.

Ein damit verbundenes Problem tritt auf, wenn der Anwendungscode sehr langsam ist und Anweisungen nicht schnell genug an die GPU sendet, um sie vollstĂ€ndig zu nutzen. Dies kann dazu fĂŒhren, dass die GPU eindeutige Frames mit einer geringeren Geschwindigkeit erstellt, als wenn sie tatsĂ€chlich hĂ€ufig Anweisungen von der Anwendung erhalten hĂ€tte. Dies ist eine hĂ€ufige Ursache fĂŒr Verzögerungen, die in 2D-Anwendungen mit weniger als 60 Bildern pro Sekunde auftreten.

Lagi
Lagi Typ ‚jank‘ ist schwer in Worten zu beschreiben, aber sie sind leicht zu erkennen. Nathan Gitter definiert sie im Artikel " Designing Jank-Free Apps " als "visuelle AbstĂŒrze, die unerwartet oder ablenkend sind".


Loop-Overlay


Wir haben mindestens drei Teile der Pipeline besprochen, bei denen es aufgrund intermittierender AktivitÀten zu Verzögerungen kommt: Eingabe-Scannen, GPU-Rendering-Zyklen und Anzeige-Aktualisierungszyklen. Es ist wichtig zu beachten, dass sie so kombiniert werden können, dass sich im Wesentlichen alle Verzögerungen summieren:


Warten auf mehrere Zyklen. Die hypothetische Verzögerungskaskade zeigt, wie das Warten auf aufeinanderfolgende Hardwarezyklen eine Verzögerung akkumulieren kann. Die gestrichelten vertikalen Linien geben die Zyklen an, die der Förderer erwarten sollte.

Um zum nĂ€chsten Schritt in der Pipeline zu gelangen, mĂŒssen wir bis zum nĂ€chsten Zyklus warten. Und Schleifen dĂŒrfen nicht miteinander ausgerichtet sein. Inkonsistente Zyklen und eine ungĂŒnstige anfĂ€ngliche Eingabezeit können eine zusĂ€tzliche Verzögerung von 10 Millisekunden verursachen. Dies ist ein großer Betrag im Vergleich zu den oben beschriebenen Verzögerungsbudgets.

Laufzeitaufwand


Auf der Softwareseite sind Laufzeitverzögerungen Betriebssystemen und anderem Code inhÀrent, der nicht direkt mit der Anwendung zusammenhÀngt. Betrachten Sie zwei wichtige Beispiele: Speicherbereinigung und Zeitplanung.

Zuerst kommt die Garbage Collection (GC). GC ist auf den beiden weltweit am hÀufigsten verwendeten Plattformen von entscheidender Bedeutung: Web (JavaScript) und Android (Java).

In einigen FĂ€llen kann die Speicherbereinigung zu einer großen Verzögerung fĂŒhren, insbesondere im Hinblick auf die Anforderungen an eine geringe Eingangsverzögerung. In JavaScript- oder Java-Umgebungen sind Verzögerungen bei der Speicherbereinigung von etwa 10 ms nicht ĂŒberraschend. Aber das ist das ganze Budget fĂŒr das Ziehen von Objekten auf dem Touchscreen!

Die Speicherbereinigung kann nur einen Frame verzögern. Aber wie im Fall von Verzögerungen aufgrund von Bildverlust stören solche Rucke die Benutzer.

Es gibt Möglichkeiten, die GC-Verzögerung zu reduzieren. Dazu gehören das Verschieben eines möglichst großen Teils der GC-Arbeit außerhalb des Hauptthreads und das Optimieren des GC fĂŒr nur wenige separate Pausen. Siehe zum Beispiel die BemĂŒhungen von V8 , so viele SpeicherbereinigungsvorgĂ€nge wie möglich aus dem Mainstream zu entfernen, und die BemĂŒhungen von Go , die GC-Verzögerungen deutlich unter 1 ms zu maximieren.

Es gibt eine weitere Option zur Verwendung einer Programmiersprache, die den Komfort von GC teilweise beeintrĂ€chtigt, jedoch eine vorhersehbarere Leistung aufweist. Sprachen wie Swift vermeiden die Verwendung von willkĂŒrlicher Speicherbereinigungautomatische ReferenzzĂ€hlung .

Eine weitere potenzielle Overhead-Quelle ist das Betriebssystem-Shedding. Unsere Anwendung (und ihre AbhĂ€ngigkeiten im Betriebssystem) funktioniert nicht unbedingt stĂ€ndig. Andere Programme können fĂŒr den Start geplant werden, wĂ€hrend unsere Programme fĂŒr eine sehr kurze Zeit zwangsweise ausgesetzt werden. Jedes Programm braucht Zeit und die Anzahl der Prozessorkerne ist begrenzt.

Das Versandproblem hĂ€ngt mit der CPU-Auslastung zusammen. Wenn Ihre Anwendung ihre Leistungsziele erreicht, jedoch fast 100% der Computerressourcen benötigt, kann dies die Benutzer stören. Der Batterieverbrauch steigt, das GerĂ€t erwĂ€rmt sich und kann mit einem LĂŒfter GerĂ€usche machen. Mit anderen Worten, ceteris paribus, eine geringe CPU-Auslastung ist fĂŒr den Benutzer besser.

Absichtliche Verzögerung


Eine typische Ursache fĂŒr Verzögerungen bei mobilen Schnittstellen ist das Design des Betriebssystems selbst und der Anwendungen. Es gibt einige wichtige Wechselwirkungen, die nur durch echte Erwartung erreicht werden können.

Android und iOS verwenden hĂ€ufig das "lange DrĂŒcken", um auf das KontextmenĂŒ zuzugreifen. Der Benutzer muss Hunderte von Millisekunden warten, um den Befehl auszufĂŒhren.

Damit sind Verzögerungen verbunden, um Unklarheiten zu beseitigen. In Mobile Safari gibt es beispielsweise eine Standardverzögerung von 350 ms zwischen dem Klicken des Benutzers auf den Link und dem Laden einer neuen Seite durch den Browser. Dies ist erforderlich, um den Unterschied zwischen dem Klicken auf einen Link und dem zweimaligen Tippen (Zoomen) zu bestimmen. Einzelheiten zu dieser Verzögerung finden Sie hier .. Es gibt auch Informationen zu den neuesten Änderungen, mit denen Anwendungsentwickler dieses Problem umgehen können.

Feindliche Agenten


Eine hĂ€ufige Verzögerungsquelle fĂŒr Benutzer im Internet sind böswillige AktivitĂ€ten, z. B. AktivitĂ€ts-Tracker, die Benutzeraktionen verfolgen und aufdringliche Anzeigen herunterladen.


Ein Artikel mit 500 Wörtern auf der Website der Washington Post erfordert ungefĂ€hr hundert HTTP-Anforderungen und das Laden dauert ungefĂ€hr 4400 ms. FĂŒr Tracker und Anzeigen werden viele Abfragen benötigt. Ein kleiner Teil davon wird gezeigt.

Es gibt viele wunderbare Artikel ĂŒber die Adipositas im Web: siehe The Bullshit Web , „Die Krise der Adipositas-Websites“ , Web Bloat und andere. Wir

betonen lediglich, dass die grĂ¶ĂŸte Verzögerungsquelle auf vielen Websites darin besteht, alle Arten von Unsinn gegen den Willen der Benutzer herunterzuladen.

Anwendungscode


Die letzte Quelle der Verzögerung, die wir erwĂ€hnen, ist vielleicht die offensichtlichste: Dies ist die Anwendung selbst. Wenn eine Anwendung viel Prozessorzeit damit verbringt, Eingaben zu verarbeiten oder eine Aktion auszufĂŒhren, ist sie langsam.

Alles zusammenfĂŒgen


Betrachten Sie das Beispiel, aus dem sich die Gesamtverzögerung zusammensetzt: Ein


hypothetisches Beispiel fĂŒr die Ende-zu-Ende-Verzögerung von der Eingabe bis zur Anzeige auf dem Bildschirm. Die gestrichelten vertikalen Linien geben die Zyklen an, die der Förderer erwarten sollte.

Das obige Beispiel ist hypothetisch, aber bezeichnend. Es zeigt, wie viele Ebenen Verzögerung hinzufĂŒgen, sodass die Anwendung sehr langsam sein kann, selbst wenn sie mit voller Bildrate ausgefĂŒhrt wird.

Zu schnelle Software


Ein Deep Technology Stack ist dafĂŒr verantwortlich, auf eine moderne Computerschnittstelle mit Benutzeraktionen zu reagieren. Selbst ein einfacher Tastendruck auf der Tastatur und das Erscheinen des entsprechenden Zeichens im Eingabetextfeld durchlaufen eine lange, komplexe Abfolge von Schritten: vom Scannen der Tastatur ĂŒber die Verarbeitungsebenen des Betriebssystems und des Frameworks bis hin zum Rendern der Grafikkarte und der Aktualisierungsrate der Anzeige.

Es gibt einen Grund fĂŒr diese KomplexitĂ€t, und dennoch sind wir traurig, dass Computerbenutzer, die so oft versuchen, produktiv zu arbeiten, warten, das Sanduhrsymbol beobachten und das GefĂŒhl haben, dass ihre GerĂ€te einfach nicht mithalten können.

Wir glauben, dass schnelle Software Benutzer befÀhigt und sie produktiver macht. Wir wissen, dass die heutige Software Benutzer hÀufig ausfÀllt, langsam ist, und wir möchten die Situation verbessern. Wir hoffen, dass dieses Material Ihnen bei der Arbeit an Ihrer eigenen Software hilfreich sein wird.

Literatur


1. Endo, Wang, Chen, Seltzer. "Verzögerung der Effizienz eines interaktiven Systems" , Proceedings of the USENIX 2nd Symposium on Operating Systems Design and Implementation , 1996.

2. Ng, Annette, Ditz, Gupta, Bischoff. „In kĂŒrzester Zeit: Wahrnehmung Verzögerung Studie die Interaktion mit einem Stift» , Proceedings der 32. Jahres ACM Conference on Human Factors in Computing Systems , 2014.

3. Ng Lepinsk, Vigdor, Sanders, Dietz. „Entwicklung von GerĂ€ten mit direkter BerĂŒhrungseingabe mit geringer Latenz“ , Tagungsband des 25. jĂ€hrlichen ACM-Symposiums fĂŒr Software und Technologie fĂŒr BenutzeroberflĂ€chen , 2012.

4. Deber, Jota, Forlays, Wigdor.„Welche Geschwindigkeit ist genug? Die Wahrnehmung der Verzögerung durch den Benutzer und ihre Verbesserung der direkten und indirekten BerĂŒhrungsschnittstellen “ , Bericht der 33. jĂ€hrlichen ACM-Konferenz ĂŒber Human Factors in Computersystemen , 2015.

5. Annette, Ng, Ditz, Bischof, Gupta. „Auf welches Niveau sollte man gehen? Die Verzögerungswahrnehmung des Zeichnens verstehen “ , Proceedings of Graphics Interface 2014 , 2014.

6. Forch, Franke, Rauch, Krems. "Sind 100 ms genug?" Charakterisierung der Schwellenwahrnehmung von Verzögerungen bei der Interaktion mit der Maus “ , Technische Psychologie und kognitive Ergonomie: Kognition und Design , 2017.

7. Dabrowski, Manson.«40 » , Interacting with Computers , 2011.

8. -, , , , . « » , 38th International ACM SIGIR Conference on Research and Development in Information Retrieval , 2015.

Source: https://habr.com/ru/post/de431282/


All Articles