Langsame Software

Ursprünglicher Autor: Mark McGranaghan
  • Übersetzung
Vom Übersetzer: Das Problem der langsamen Software ist in den letzten Wochen zu einem der Hauptthemen der Diskussion von Habré und Hacker News geworden. Siehe zum Beispiel Nikita Prokopovs Artikel „Meine Enttäuschung in Software“ und 2432-Kommentare dazu.

Wir verbringen viel Zeit am Computer. Wir warten auf jedes Mal, wenn Sie Anwendungen starten und Webseiten herunterladen. Überall Ikonen mit Spinner oder Sanduhr. Die Hardware ist leistungsfähiger, aber die Software scheint immer noch langsam zu sein. Warum so?

Wenn Sie einen Computer für wichtige Arbeiten verwenden, verdienen Sie schnelle Software. Allzu oft erfüllt moderne Software diese Anforderungen nicht. Im Forschungslabor Ink & SwitchWir haben die Gründe für diese Situation untersucht, die Software wurde schließlich besser. Dieser Artikel hat die Ergebnisse unserer Forschung veröffentlicht.

Inhaltsverzeichnis



Wo genau ist die Langsamkeit


Was empfinden Benutzer als "langsames" Programm? Wir alle ärgern manchmal Verzögerungen und Verzögerungen. Um diese Probleme jedoch besser zu verstehen, sollte man die intuitiven Empfindungen mit akademischen Studien ergänzen, die diese Frage streng beantworten.

Die wahrgenommene Geschwindigkeit hängt eng mit dem Konzept der Latenz zusammen. Ein Vergleich der Forschung von "Was scheint langsam" mit der Messung der realen Verzögerung in realen Anwendungen macht deutlich, wie schlecht alles ist.

Verzögerung ist keine Bandbreite


Bei der Erörterung der Softwareleistung hören wir oft von Bandbreite. Beispielsweise kann "dieser Webserver 10.000 Anfragen pro Sekunde ausführen." Aber so nehmen Nutzer die Dinge nicht wahr. Sie kümmern sich darum, wie lange ihre spezifische Webanforderung dauert oder wie lange es dauert, ein Dokument zu öffnen, oder wie schnell die Anwendung auf einen Mausklick reagiert. Diese Wechselwirkungen sind mit zugeordneten Verzögerung (Latenz). Verzögerung ist eine kritische Metrik, die wir in diesem Artikel untersuchen werden.

Benutzererfahrung
mehr über die Bedeutung von Verzögerungen bei interaktiven Systemen Lernen finden. Hier .

Andere Faktoren beeinflussen auch die Geschwindigkeit der Software. Zum Beispiel die Framerate und das Feedback bei langen Aufgaben. Wir glauben jedoch, dass die Verzögerung eine grundlegende Messgröße ist, und mit einer sehr geringen Verzögerung wird jede Software als extrem schnell wahrgenommen.

Berühren Sie die Schnittstellen


Betrachten Sie zunächst die menschliche Empfindlichkeit gegenüber Verzögerungen auf dem Touchscreen.

Forscher testen dies mit Tests, die genau bestimmen, welche Art von Verzögerung der Benutzer wahrnimmt. Zunächst wird den Probanden eine Schnittstelle mit einer Verzögerung von etwa 1 ms und dann etwa 70 ms angeboten. Sie werden aufgefordert, Operationen wie das Drücken einer Taste auszuführen. Wenn eine Schnittstelle von 70 ms durchweg ein schlechteres Ergebnis aufweist als eine Schnittstelle von 1 ms, dann wird 70 ms als "wahrnehmbarer Unterschied" bezeichnet.

Minimale wahrnehmbare Differenz
Weitere Informationen zur minimal wahrnehmbaren Verzögerungsdifferenz und den zugehörigen experimentellen Einstellungen finden Sie in diesem Dokument .

Der kleinste erkennbare Unterschied ist das Budget, nach dem der konkrete Vorgang für den Benutzer langsam erscheint.

Wenn Sie zum Beispiel Objekte auf den Bildschirm ziehen, sehen Benutzer Verzögerungen von nur ~ 2 ms. Die am wenigsten wahrnehmbare Verzögerung hängt vom Benutzer und der durchgeführten Aktion ab, ist jedoch immer sehr gering.

Verzögerte Wahrnehmung beim Ziehen Ein
2–16 ms Wahrnehmungsbericht beim Ziehen mit dem Stift .
2−11 ms beim Ziehen mit dem Finger .
Durchschnittlich 11 ms beim Ziehen mit dem Finger .

Ähnliche Ergebnisse wurden beim Zeichnen mit dem Stift auf dem Tablett erhalten. Die Forscher schlugen vor, dass die Benutzer eine Verzögerung von 20 bis 80 ms feststellen. In unseren eigenen inoffiziellen Tests wird eine Verzögerung von etwa 80 ms als sehr auffällig wahrgenommen und es dauert etwas näher an 20 ms, damit der Stift während der Handschrift ansprechend erscheint.

Stiftverzögerungswahrnehmung Ein
Bericht über die Verzögerung der Wahrnehmung von 10–70 ms, wenn mit einem Stift geschrieben wird .
21–82 ms für verschiedene Aktionen mit dem Stift .

Der Unterschied zwischen Handschrift mit niedriger und hoher Latenzzeit ist beim Vergleichen offensichtlich:

Links: iPad Pro- und Notes-Anwendung mit einer Durchlaufverzögerung von etwa 15 ms. Rechts: Samsung S3 und OneNote mit einer Verzögerung von ca. 70 ms. Das Video wird 16 Mal verlangsamt.

Eine andere übliche Operation bei Touch-Geräten ist das Klicken auf Schaltflächen oder Links. Tests haben gezeigt, dass Benutzer eine Verzögerung von ungefähr 70 ms bei der Wende bemerken (obwohl diese für einige Benutzer wahrscheinlich niedriger ist).

Wahrnehmung einer Verzögerung beim Klicken auf einen Bildschirm
Diese Studie ergab eine durchschnittliche unterscheidbare Mindestverzögerung von 69 ms.

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

Links: Öffnen der Registerkarte "Einstellungen" des iPhone 6s mit einer Verzögerung von etwa 90 ms. Rechts: Schalten Sie die Einstellungen des Samsung S3 mit einer Verzögerung von ca. 330 ms um. Das Video wird 16 Mal verlangsamt.

Wie erreichen moderne Anwendungen diese Grenzwerte? Wenn wir über das Ziehen mit dem Finger sprechen, kann kein kommerzielles System einer Verzögerung von mehreren Millisekunden entsprechen, um alle Verbraucher zufrieden zu stellen.

Drag & Drop-Performance
Wie wir weiter unten sehen werden, passen selbst die Bildschirme und Dateneingabegeräte nicht in das 10-ms-Budget, ganz zu schweigen von mehreren Softwareschichten.

Wenn Sie alle aktuellen Touchscreen-Betriebssysteme verwenden, werden zumindest einige Benutzer das Gefühl haben, dass das Objekt beim Ziehen hinter dem Finger zurückbleibt.

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

Nachfolgend sind die Ergebnisse der Ink & Switch-Tests zur Verzögerung beim Zeichnen mit dem Stift auf einem Tablett für verschiedene Geräte aufgeführt. Die durchschnittlichen Verzögerungen, gemessen vom Kontakt mit dem Bildschirm vor Beginn der Farbänderung des entsprechenden Pixels, werden auf die nächsten 5 ms gerundet.

GerätDas ProgrammVerzögerung (ms)
iPad ProHinweise20
GoodNotes30
Flattern35
Oberfläche proEinsendung25
Skizzenblock30
Leinwand60
PixelbookTintenfisch40
Leinwand60
Samsung S3Tintenfisch60
Flattern65
Leinwand75
Liveboard80

Es liegen zwar keine Daten zu Verzögerungen auf allen Geräten vor, wir gehen jedoch davon aus, dass sie mit den oben beobachteten Verzögerungen beim Stiftzeichnen vergleichbar sind.

Zeichnungsverzögerungen im Vergleich zu drückenden Verzögerungen
Wir erwarten, dass diese Verzögerungen vergleichbar sind, da in beiden Fällen die Berührungseingabe verwendet wird, dh der Bildschirm-Aktualisierungszyklus aktiviert ist. Es gibt jedoch einige Unterschiede, sodass es unwahrscheinlich ist, dass die Werte genau gleich sind.

Da hier eine Verzögerung von ca. 70 ms sichtbar ist, können die meisten Systeme gut auf Depressionen reagieren. Es ist jedoch auch leicht, Anwendungen zu finden, die viel schlechter arbeiten als die theoretischen Fähigkeiten des Systems.

Im Allgemeinen sollten Sensorsysteme sehr geringe Verzögerungen haben, damit sie sich ansprechen. Die meisten Geräte und Anwendungen sind nicht in der Lage, eine Leistung dieser Stufe bereitzustellen, und daher fühlen sich alle für Benutzer unterschiedlich langsam.

Tastatur


Es gibt Hinweise darauf, dass die zunehmende Anzahl von Schreibvorgängen die Nutzer verschlechtert.

Auswirkung der Eingangsverzögerung
In dieser Studie wurden den Tastenanschlägen zufällige Verzögerungen hinzugefügt, die die Eingangsleistung beeinträchtigten. Es wurde jedoch nur ein Bereich von Verzögerungen ausgewertet. Darüber hinaus weisen die Autoren der Studie darauf hin, dass erfahrene Schriftsetzer sich an erhöhte Latenzzeiten anpassen können.

Wir wissen jedoch nichts über Studien, die spezifisch die am wenigsten wahrnehmbaren Eingangsverzögerungen messen. Eine Berührungsverzögerung auf dem Touchscreen (spürbar bei etwa 70 ms) kann eine nützliche Richtlinie sein, da sie auch die Zeit zwischen einer diskreten Fingerberührung und einem visuellen Bildschirmupdate misst.

Nachfolgend finden Sie einige informelle Messungen der Durchlaufverzögerung der Tastatur vom Beginn eines Tastendrucks bis zum Auftreten eines Symbols auf verschiedenen Maschinen. Quellen: „Computer delay: 1977–2017“ , testet Ink & Switch.

ComputerVerzögerung (ms)
Apple IIe30
Commodore Pet 401660
iMac g4 OS 970
Macbook Pro 2014100
Kundenspezifischer Haswell-e 24Hz140
Samsung S3150
Powerspec g405 Linux170
Symbolics 3620300

Genaue Messungen, um die Auswirkungen von Tastaturverzögerungen zu bewerten, wäre ein großartiges Experiment für abenteuerlustige Forscher. In jedem Fall ist es wahrscheinlich, dass für viele Benutzer der Schwellenwert für eine spürbare Verzögerung bei der Eingabe über die Tastatur unter 100 ms liegt. Vielleicht viel niedriger.

Die maus


Der letzte Typ von Eingabegeräten in unserem Test. In einem Experiment konnte festgestellt werden, dass Benutzer eine Mausverzögerung von 34 bis 137 ms mit einem Durchschnittswert von 65 ms wahrnehmen.

Unterschiedliche Mäuse haben sehr unterschiedliche Verzögerungswerte. Einige Systeme zeigen Werte von weniger als 10 ms, indem sie Hochleistungsgeräte mit einer sorgfältigen Programmierung auf niedriger Ebene kombinieren ( eine Installation mit einer Verzögerung von etwa 8 ms wird hier beschrieben). Darüber hinaus ist es mit einer Kombination aus mittelmäßiger Hardware und Anwendungen, die zusätzliche Verzögerungen oder Puffer zwischen der Maus und dem Display verursachen, möglich, über 100 ms hinauszugehen.

Anwendungen


Verzögerungen auf Anwendungsebene messen, wie lange es dauert, um bestimmte Anwendungsaktionen durchzuführen, beispielsweise das Laden von Webseiten. Ein Beispiel für eine solche Verzögerung ist das Laden der NYTimes-Webseite, die etwa 3000 ms benötigt.


Wann scheint die Anwendungsaktivität schnell zu sein? Es ist schwer mit Sicherheit 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.

Verzögerungsliteratur
Siehe die Literaturübersicht zum Einfluss der Latenzzeit auf Benutzer unterschiedlicher Anwendungen. Dies ist ein guter Ausgangspunkt für einen tieferen Einstieg in das Thema.

Einer der Referenzwerte ist, wie oben erwähnt, eine typische Metrik von 70 ms, die geringste Verzögerung beim Drücken des Bildschirms. Wenn Sie eine Verzögerung zwischen dem Klicken auf den Link und dem Anzeigen des Klickindikators feststellen, sollten Sie eine ähnliche Verzögerung zwischen dem Klicken und dem Öffnen der Webseite feststellen.

Ein weiterer Referenzwert ist das Google RAIL-Modell für Entwickler. Obwohl die Autoren dieses Modells ihre Behauptungen nicht begründen, behauptet das Modell, dass sich die Antwort innerhalb von 100 ms „wie ein Moment anfühlt“ und eine höhere Verzögerung „die Verbindung zwischen Aktion und Reaktion bricht“.

Sie können Ihre eigene Empfindlichkeit im Terminal informell überprüfen. Nehmen Sie Ihre bevorzugten Befehlszeilenprogramme und führen Sie sie mit dem Parameter 'time' aus, der die Ausführungszeit misst. Sie werden sicherlich den Unterschied zwischen den Antworten in 15 ms (großartig!) Und 500 ms (offensichtlich langsam) bemerken.



Als Endbezugspunkt berücksichtigen wir, dass die typische menschliche Reaktionszeit auf einen visuellen Stimulus etwa 220 ms beträgt .

Dieser Wert ist viel größer als eine spürbare Verzögerung, da die Reaktion nicht nur Beobachtung, sondern auch nachfolgende Aktion beinhaltet.

Es ist auch notwendig, die Schlussfolgerungen einiger Forscher zu berücksichtigen, dass eine Person eine Zunahme der Verzögerung auf einer unbewussten, physiologischen Ebene wahrnehmen kann.

Echte Anwendungen


Wie passen reale Anwendungen zu diesen Sehenswürdigkeiten? Einige bewältigen. Beispielsweise werden viele Unix-Befehlszeilenprogramme schneller als 100 ms ausgeführt.

Die meisten Internetanwendungen befinden sich jedoch außerhalb des Bereichs. Die Google-Suche in etwa 1000 ms ist viel schneller als die meisten Webanwendungen, ist jedoch immer noch merklich langsamer als die Interaktion von weniger als 100 ms in der Befehlszeile. Und es ist leicht, Beispiele für Seiten zu finden, die länger als 5000 ms geladen werden, selbst wenn die Mischung stimmt.

Bei Mobil- und Desktopcomputern gibt es einige Anwendungen, die durchgängig eine Verzögerung von weniger als 100 ms aufweisen, wie z. B. der integrierte Taschenrechner unter iOS. Es ist jedoch leicht, Anwendungsbeispiele zu finden, die diesen Schwellenwert deutlich überschreiten, auch wenn alle Daten lokal verfügbar sind (sein sollten). Betrachten Sie das Slack-Beispiel.

Das folgende Video zeigt, dass das Umschalten zwischen zwei kleinen Kanälen im selben Arbeitsbereich des iPad Pro etwa 220 ms dauert, obwohl keine Netzwerkanrufe erforderlich sind und das iPad Pro möglicherweise das leistungsfähigste mobile Gerät der Welt ist (das Video wird acht Mal verlangsamt) ):


Es ist schwierig, eine allgemeine Schlussfolgerung für alle Programme zu ziehen, die sich in so weitreichenden Bereichen befinden wie verspätete Maßnahmen. Es ist jedoch offensichtlich, dass einige Anwendungen schnell genug Aktionen ausführen und für Benutzer sofort erscheinen (weniger als 100 ms), aber viele Anwendungen nicht.

Woher kommt die Verlangsamung?


Daher haben wir festgestellt, dass viele Programme tatsächlich langsam sind. Wohin geht die ganze Zeit und was können wir optimieren? Betrachten Sie diese Frage, 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 konvertiert, ist die Verarbeitung der Eingabedaten: Konvertieren eines Kontakts mit einem Touchscreen, einer Tastatur oder einer Maus in ein digitales Signal für das Betriebssystem. Hier sehen wir, wie lange dieser Schritt dauert.

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

TastaturVerzögerung (ms)
Apple-Magie15
Das 325
Kinesis freestyle230
Ergodox40
Kinesis Vorteil50
Logitech MK36060

Wie Sie sehen, können diese Tastaturen im ersten Schritt der Verarbeitungs-Pipeline leicht mehrere zehn Millisekunden aus dem Budget auswählen. Dies ist ab einem Gesamtbudget von 100 ms oder weniger! Viel mehr Informationen zu diesem Thema sind in dem Artikel abgedeckt „Drucke mit Vergnügen“ .

Mäuse nehmen ebenfalls mehrere zehn Millisekunden aus dem Budget. Die meisten leistungsstarken Gaming-Mäuse haben jedoch eine Verzögerung von weniger als 10 ms. Die Angaben zur Reaktion auf das Drücken unterscheiden sich, auch hier zeigen einzelne Fälle ein Ergebnis von weniger als 10 ms ( Beispiel ).

In mobilen Geräten ist es schwieriger, den Bruchteil der Verzögerung von Eingabegeräten zu messen, da sie eng mit anderen Hardwarekomponenten integriert sind. Wir können jedoch einige der gängigen Muster in Geräten der Eingabegeräte verwenden, um ihre Latenzzeit sowie Stand-Alone-Geräte zu bewerten.

Abtastrate


Eines der häufigsten Muster ist die Abtastrate. In vielen Eingabegeräten wird das Gerät in regelmäßigen Abständen „gescannt“ oder „abgetastet“. Ein typischer Consumer-Touchscreen arbeitet beispielsweise mit einer Frequenz von 60 Hz, dh er ruft Sensoren etwa alle 17 ms ab. Dies bedeutet, dass im ungünstigsten Fall die Verzögerung des Eingabegeräts mindestens 17 ms und im Durchschnitt nicht mehr als 8 ms beträgt.

Wenn alle anderen Dinge gleich sind, verringert eine höhere Abtastfrequenz die Eingangsverzögerung. Beispielsweise arbeiten die fortschrittlichen Touchscreens und Eingabestifte von Apple bei Frequenzen über 60 Hz (Informationen aus dem Apple-Dokumentationsarchiv ).

GerätTouchscreen (Hz)Stift (Hz)
iPhone 660
iPhone 760
iPhone 860
iPhone X120
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. Daher muss die Tastatur auf eine USB-Abfrage warten, um Informationen zu den Druckmaschinen zu senden. USB-Abfragen mit niedriger Geschwindigkeit werden bei 125 Hz ausgeführt, wodurch die unvermeidlichen max. und ~ 4 ms durchschnittliche Verzögerung. Spätere Versionen des USB-Scans mit einer Frequenz von 1000 Hz oder mehr minimieren den Effekt der Verzögerung.

Es gibt viele andere mögliche Verzögerungsquellen in Eingabegeräten, z. B. Contact Bounce (weitere Informationen finden Sie im Artikel „Scannen der Tastaturmatrix und Contact Bounce“ über die Software- und Hardwareeffekte von Bounce).

Wir werden hier nicht alle Nuancen betrachten, wir betonen jedoch den Hauptpunkt: a) Die Eingabegeräte selbst können eine erhebliche Verzögerung verursachen, bevor eine Verarbeitung in der Software stattfindet. b) dies kann verschiedene Gründe haben und die Zeitverzögerung wird addiert.

Displays und GPUs


Die Hardware am anderen Ende der Pipeline besteht aus Displays und Grafikkarten.

Eine der Verzögerungsquellen ist hier die Bildrate der Anzeige. Da die Anzeigen nicht fortlaufend neu gezeichnet werden können, führt dies zu einer unvermeidlichen Verzögerung, ähnlich wie beim Abfragen der oben beschriebenen Eingabegeräte. Wenn der Bildschirm etwa alle 20 ms aktualisiert wird, fügt er im schlimmsten Fall eine Verzögerung von 20 ms und im Durchschnitt 10 ms hinzu.

Bewegungswahrnehmung
Andere Faktoren beeinflussen unsere Wahrnehmung von sich auf dem Bildschirm bewegenden Objekten. Blur Busters ist eine großartige Ressource zu diesem Thema. Siehe beispielsweise LCD-Bewegungsartefakte 101 .

Die meisten Displays arbeiten mit 60 Hz, während professionelle Geräte und Spieledisplays mit 120 Hz, 144 Hz und 240 Hz arbeiten. Daher erhöht nur die Bildrate der Anzeige normalerweise etwa 8 ms zur Verzögerung, obwohl sie bei Anzeigen mit der höchsten Bildrate auf wenige Millisekunden reduziert werden kann.

Ein weiterer Beitrag zur Verzögerung von Anzeigen ist die Zeit, die erforderlich ist, um die Farbe der Pixel nach dem Empfang neuer Daten physisch zu ändern. Diese Zeitspanne reicht von wenigen Millisekunden in High-End-Spieledisplays bis zu zweistelligen Werten in weniger ansprechenden LCD-Displays.

Reaktionszeit der Anzeige
Dieser Parameter ist schwer zu messen, einige illustrative Daten sind jedoch auf der Notebook Check- Website verfügbar . Zum Beispiel sehen Sie das Beispiel von slow undschnelle Anzeigen.

Bei modernen High-End-Geräten ist das Display an einen speziellen Grafikprozessor (GPU) angeschlossen. GPUs erstellen ein Array von Pixeln, die angezeigt werden sollen, z. B. durch Erstellen von 2D-Ebenen oder Rendern von virtuellen 3D-Szenen. Grafikprozessoren erzeugen Frames mit einer Geschwindigkeit, die von der GPU-Hardware, der Interaktion mit der Anwendung und dem Plattformcode und manchmal von der Logik der Synchronisierung mit den Anzeigen abhängt.

Ein verwandtes Problem tritt auf, wenn der Anwendungscode sehr langsam ist und nicht schnell genug Anweisungen an die GPU sendet, um den vollen Nutzen daraus zu ziehen. Dies kann dazu führen, dass der Grafikprozessor eindeutige Frames mit einer niedrigeren Geschwindigkeit erstellt, als wenn er tatsächlich häufige Anweisungen von der Anwendung hätte. Dies ist eine häufige Ursache für Verzögerungen, die wir in 2D-Anwendungen sehen, die weniger als 60 Frames pro Sekunde anzeigen.

Lagi
Lagi Typ ‚jank‘ ist schwer in Worten zu beschreiben, aber sie sind leicht zu erkennen. Nathan Gitter definiert sie im Artikel " Jank-Free-Apps entwerfen" als "unerwartete oder ablenkende Sehfehler".

Überlagerungszyklen


Wir haben mindestens drei Teile der Pipeline diskutiert, bei denen aufgrund periodischer Aktivität eine Verzögerung auftritt: Eingabeprüfung, GPU-Rendering-Zyklen und Anzeigeaktualisierungszyklen. Es ist wichtig zu beachten, dass sie so kombiniert werden können, dass tatsächlich alle Verzögerungen hinzugefügt werden:


Warten auf mehrere Zyklen. Die hypothetische Verzögerungskaskade zeigt, wie das Warten auf aufeinanderfolgende Hardware-Zyklen zu Latenzen führen kann. Gepunktete vertikale Linien geben die Zyklen an, die die Pipeline erwarten sollte.

Um zum nächsten Schritt in der Pipeline zu gelangen, müssen wir auf den nächsten Zyklus warten. Und die Zyklen sind möglicherweise nicht miteinander ausgerichtet. Inkonsistente Zyklen und eine ungünstige anfängliche Eintrittszeit 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.

Laufzeit-Overhead


Auf der Softwareseite sind Verzögerungen bei der Ausführung von Betriebssystemen und anderem Code inhärent, der nicht direkt mit der Anwendung zusammenhängt. Betrachten Sie zwei wichtige Beispiele: Speicherbereinigung und -planung.

Zuerst kommt Müllsammlung (GC). GC ist für die zwei am häufigsten verwendeten Plattformen der Welt von entscheidender Bedeutung: das 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 für eine geringe Eingangsverzögerung. In JavaScript- oder Java-Umgebungen sind Verzögerungen bei der Speicherbereinigung in der Größenordnung von 10 ms nicht überraschend. Es ist jedoch das gesamte Budget, um Objekte auf den Touchscreen zu ziehen!

Die Garbage Collection kann nur einen Frame verzögern. Aber wie im Falle von Verzögerungen aufgrund von Personalverlust ärgern solche Benutzer die Benutzer.

Es gibt Möglichkeiten, die GC-Latenzzeit zu reduzieren. Dazu gehört, möglichst viel GC-Arbeit über die Grenzen des Hauptflusses hinaus zu bewegen und den GC-Betrieb nur in kleinen separaten Pausen zu optimieren. Sehen Sie sich beispielsweise die Bemühungen von V8 an, möglichst viele Speicherbereinigungsvorgänge über die Grenzen des Hauptflusses hinaus zu verschieben, und die Bemühungen der Go-Entwickler , sicherzustellen, dass die maximalen GC-Verzögerungen deutlich unter 1 ms liegen.

Es gibt eine weitere Option, eine Programmiersprache zu verwenden, die die Bequemlichkeit des GCs teilweise einschränkt, jedoch eine besser vorhersagbare Leistung bietet. Sprachen wie Swift vermeiden die Verwendung beliebiger Speicherbereinigungenautomatische Referenzzählung .

Eine weitere potenzielle Quelle für Overhead ist die Planung im Betriebssystem. Unsere Anwendung (und ihre Betriebssystemabhängigkeiten) funktionieren nicht unbedingt immer. Weitere Programme können zum Start geplant werden, und unsere Programme werden zwangsweise ausgesetzt, wenn auch für eine sehr kurze Zeit. Jedes Programm fragt nach Zeit und die Anzahl der Prozessorkerne ist begrenzt.

Eine CPU-Last ist mit einem Versandproblem verbunden. Wenn Ihre Anwendung ihre Leistungsziele erreicht, aber fast 100% der Rechenressourcen erfordert, kann dies die Benutzer möglicherweise stören. Der Batterieverbrauch steigt an, das Gerät heizt sich auf und macht wahrscheinlich Geräusche mit dem Lüfter. Mit anderen Worten, wenn andere Dinge gleich sind, ist eine niedrige CPU-Auslastung für den Benutzer besser.

Vorsätzliche 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 Interaktionen, die nur durch echte Erwartung erreicht werden können.

Android und iOS verwenden weitgehend "Langes Drücken", um auf Kontextmenüs zuzugreifen. Sie erfordern, dass der Benutzer hunderte Millisekunden warten muss, um den Befehl auszuführen.

Verzögerungen sind damit verbunden, um Mehrdeutigkeiten 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. Hiermit wird der Unterschied zwischen dem Klicken auf einen Link und dem Doppeltippen (Zoomen) bestimmt. Einzelheiten zu dieser Verzögerung finden Sie hier .. Es gibt auch Informationen zu den neuesten Änderungen, mit denen Anwendungsentwickler dieses Problem umgehen können.

Feindselige Agenten


Eine häufige Latenzzeit für Benutzer im Internet sind böswillige Aktivitäten, z. B. Aktivitäts-Tracker, die die Benutzeraktivität verfolgen und aufdringliche Anzeigen herunterladen.


Ein Artikel mit 500 Wörtern auf der Washington Post-Site erfordert etwa hundert HTTP-Anforderungen und dauert etwa 4400 ms. Viele Anfragen werden für Tracker und Anzeigen benötigt. Ein kleiner Teil davon wird gezeigt:

Es gibt viele großartige Artikel über Fettleibigkeit im Web: siehe The Bullshit Web , „Die Krise der Fettleibigkeit von Websites“ , Web-Bloat usw. Betonen Sie

einfach, dass die häufigste Ursache für Verzögerungen auf vielen Websites das Laden von jeglichem Unsinn gegen die Wünsche der Benutzer ist.

Anwendungscode


Die letzte Quelle der Verzögerung, die wir erwähnen, ist vielleicht die naheliegendste: dies ist die Anwendung selbst. Wenn eine Anwendung viel Prozessorzeit für die Verarbeitung von Eingaben oder für die Durchführung einer Aktion aufbringt, ist dies langsam.

Alles zusammen setzen


Stellen Sie sich ein Beispiel für eine Gesamtverzögerung vor: Ein


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

Das obige Beispiel ist hypothetisch, aber indikativ. Es zeigt, wie viele Layer Latenz hinzufügen, sodass die Anwendung sehr langsam sein kann, selbst wenn sie mit voller Bildrate läuft.

Zu schnelle Software


Für die Reaktion der modernen Computerschnittstelle auf die Handlungen des Anwenders ist ein tiefer Stack von Technologien verantwortlich. Sogar ein einfacher Tastendruck auf der Tastatur und das Auftreten des entsprechenden Zeichens im Texteingabefeld ist eine Operation, die eine lange, komplexe Folge von Schritten durchläuft: vom Scannen der Tastatur über die Betriebssystemverarbeitungsebenen und das Betriebssystem bis hin zum Rendern der Videokarte und der Bildwiederholfrequenz.

Es gibt einen Grund für diese Komplexität, und dennoch sind wir traurig, dass Computerbenutzer, die versuchen, produktiv zu arbeiten, so oft in der Warteschleife bleiben, das Sanduhrsymbol beobachten und das Gefühl haben, dass ihre Geräte ihnen einfach nicht folgen.

Wir glauben, dass schnelle Software die Benutzer befähigt und sie produktiver macht. Wir wissen, dass die heutige Software den Benutzern oft ausfällt, weil sie langsam ist, und wir möchten die Situation verbessern. Wir hoffen, dass dieses Material für Sie nützlich ist, wenn Sie an Ihrer eigenen Software arbeiten.

Literatur


1. Endo, Wang, Chen, Seltzer. "Bewertung der Wirksamkeit eines interaktiven Systems mit Verzögerung" , Proceedings des USENIX-2. Symposiums zum Entwurf und zur Implementierung von Betriebssystemen , 1996.

2. Ng, Annette, Dietz, Gupta, Bischof. "Im Handumdrehen: Eine Studie über die Wahrnehmung der Verzögerung in der Interaktion mit einem Stift" , Verfahren der 32. ACM-Jahreskonferenz über menschliche Faktoren in Computersystemen , 2014.

3. Ng, Lepinski, Wigdor, Sanders, Dietz. „Entwicklung von Direct-Touch-Geräten mit niedriger Latenzzeit“ , Proceedings des 25. ACM-Symposiums über Benutzeroberflächen-Software und -Technologie , 2012.

4. Deber, Jota, Forlins, Wygdor.„Welche Geschwindigkeit ist genug? Nutzerwahrnehmung der Verzögerung und ihrer Verbesserung in direkten und vermittelten Touch-Schnittstellen , Verfahren der 33. Jahreskonferenz 2015.

5. Annette, Ng, Dietz, Bischof, Gupta. "Auf welches Niveau solltest du fallen?" Die Wahrnehmung der Verzögerung beim Zeichnen verstehen , Proceedings of Graphics Interface 2014 , 2014.

6. Forch, Franke, Rauch, Krems. „Ist 100 ms genug? Charakterisierung der Schwellenwahrnehmung der Verzögerung in der Interaktion mit der Maus , Ingenieurpsychologie und kognitive Ergonomie: Kognition und Design , 2017.

7. Dabrowski, Munson."40 Jahre Suche nach der besten Reaktionszeit eines Computersystems" , Interacting with Computers , 2011.

8. Barreda-Angeles, Arapakis, Bayi, Kambazoglu, Pereda. "Die Auswirkungen unbewusster physiologischer Auswirkungen verzögerter Suche auf Benutzer und deren Mausklicks" , 38. Internationale ACM-Konferenz , 2015.

Jetzt auch beliebt: