Ein paar Worte von unserem Übersetzungsbüro: Normalerweise möchte jeder die neuesten Materialien und Veröffentlichungen übersetzen, und wir sind keine Ausnahme. Terminals werden jedoch nicht einmal pro Woche aktualisiert. Deshalb haben wir für Sie einen im Frühjahr 2018 veröffentlichten Artikel von Antoine Bopre übersetzt: Trotz des nach modernen Maßstäben soliden „Zeitalters“ hat das Material unserer Meinung nach seine Relevanz nicht vollständig verloren. Darüber hinaus besteht das Original aus einer Reihe von zwei Artikeln, die wir jedoch zu einem großen Beitrag zusammengefasst haben.
Terminals nehmen einen besonderen Platz in der Computergeschichte ein, aber in den letzten Jahrzehnten wurden sie "gezwungen", zusammen mit der Befehlszeile vor dem Hintergrund allgegenwärtiger grafischer Oberflächen buchstäblich zu überleben.
Terminalemulatoren ersetzten ihre
Hardware-Gegenstücke , die wiederum eine Modifikation von Systemen auf Lochkarten und Kippschaltern waren. Moderne Distributionen verfügen über eine Vielzahl von Terminalemulatoren in allen Formen und Farben. Und während viele mit dem Standardterminal ihrer Arbeitsumgebung zufrieden sind, sind einige stolz darauf, offen exotische Software zu verwenden, um ihre Lieblings-Shell oder ihren Lieblings-Texteditor zu starten. Wie wir in diesem Artikel sehen werden, wurden jedoch nicht alle Terminals in einem Bild und einer Abbildung erstellt: Sie unterscheiden sich stark in Funktionalität, Größe und Leistung.
Einige Terminals weisen erstaunliche Sicherheitslücken auf, und die meisten verfügen über völlig andere Funktionen, von der Unterstützung der Benutzeroberfläche mit Registerkarten bis hin zur Skripterstellung. Obwohl wir uns
in der fernen Vergangenheit mit Terminalemulatoren befasst haben , handelt es sich bei diesem Artikel um ein Update des vorherigen Materials, mit dessen Hilfe die Leser bestimmen können, welches Terminal 2018 verwendet werden soll. In der ersten Hälfte des Artikels werden Funktionen verglichen und in der zweiten Hälfte die Leistung bewertet.
Hier sind die Terminals, die ich überprüft habe:

Vielleicht sind dies nicht die neuesten Versionen, da ich mich zum Zeitpunkt des Schreibens auf stabile Builds beschränkt habe, die ich auf Debian 9 oder Fedora 27 einführen konnte. Die einzige Ausnahme ist Alacritty. Er ist ein Nachkomme von Terminals mit GPU-Beschleunigung und wurde für diese Aufgabe in einer ungewöhnlichen und neuen Sprache geschrieben - Rust. Ich habe Web-Terminals von meiner Überprüfung ausgeschlossen (auch für
Electron ), da vorläufige Tests ihre extrem schlechte Leistung zeigten.
Unicode-Unterstützung
Ich habe meine Tests mit Unicode-Unterstützung gestartet. Der erste Terminaltest bestand darin, die Unicode-Zeichenfolge aus
einem Wikipedia-Artikel anzuzeigen: "é, Δ ,,, ק, م, ๗, あ, 叶, 葉 und 말". Dieser einfache Test zeigt, ob das Terminal weltweit ordnungsgemäß funktioniert. Das xterm-Terminal zeigt das arabische
Mem- Symbol in der Standardkonfiguration nicht an:

Standardmäßig verwendet xterm die klassische "feste" Schriftart, die laut
Wiki seit 1997 "eine signifikante Unicode-Abdeckung" aufweist. In dieser Schriftart passiert etwas, das dazu führt, dass das Zeichen als leerer Rahmen angezeigt wird. Erst wenn die Textschrift auf über 20 Punkte erhöht wird, wird das Zeichen endlich korrekt angezeigt. Ein solcher „Fix“ unterbricht jedoch die Anzeige anderer Unicode-Zeichen:

Diese Screenshots wurden in Fedora 27 aufgenommen, da sie bessere Ergebnisse lieferte als Debian 9, wo einige ältere Versionen von Terminals (insbesondere mlterm) mit Schriftarten nicht richtig funktionieren konnten. Glücklicherweise wurde dies in späteren Versionen behoben.
Achten Sie nun auf die Zeichenfolgenzuordnung in xterm. Es stellt sich heraus, dass das Mem-Symbol und das nachfolgende semitische
Qoph zu RTL
- Skripten (von
rechts nach links ) gehören, daher sollten sie technisch von rechts nach links angezeigt werden. Webbrowser wie Firefox 57 verarbeiten die obige Zeile korrekt. Eine einfachere Version des RTL-Textes ist das hebräische Wort "
Sarah " (
שרה ).
Die bidirektionale Wiki-Seite sagt Folgendes:
„Viele Computerprogramme können bidirektionalen Text nicht korrekt anzeigen. Zum Beispiel besteht der hebräische Name „Sarah“ aus den Symbolen sin (ש) (rechts), resh (ר) und schließlich heh (ה) (links). “
Viele Terminals bestehen diesen Test nicht: Alacritty, die von VTE abgeleiteten Terminals Gnome und XFCE, urxvt, st und xterm zeigen "Sarah" in umgekehrter Reihenfolge an, als hätten wir diesen Namen als "Aras" geschrieben.

Ein weiteres Problem bei bidirektionalen Texten besteht darin, dass sie irgendwie ausgerichtet werden müssen, insbesondere beim Mischen von RTL- und LTR-Texten. RTL-Skripte sollten auf der rechten Seite des Terminalfensters ausgeführt werden. Was sollte jedoch bei Terminals geschehen, die standardmäßig LTR-Englisch verwenden? Die meisten von ihnen haben keine speziellen Mechanismen und richten den gesamten Text links aus (einschließlich Konsole). Die Ausnahmen sind pterm und mlterm, die sich an Standards halten und solche Linien rechts ausrichten.

Einsteckschutz
Das nächste wichtige Merkmal, das ich für mich selbst festgelegt habe, ist der Schutz vor dem Einsetzen. Obwohl allgemein bekannt ist, dass Zaubersprüche wie:
$ curl http://example.com/ | sh
Es handelt sich um Push-Code-Ausführungsbefehle. Nur wenige Menschen wissen, dass versteckte Befehle beim Kopieren und Einfügen aus einem Webbrowser in die Konsole eindringen können, selbst nach einer gründlichen Überprüfung.
Die Teststelle von Gianna Horne zeigt auf brillante Weise, wie harmlos das Team aussieht:
git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git
Beim Einfügen von der Horn-Website in das Terminal wird dies zu einem solchen Ärgernis:
git clone /dev/null; clear; echo -n "Hello "; whoami|tr -d '\n'; echo -e '!\nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust! \ Here'"'"'s the first line of your /etc/passwd: '; head -n1 /etc/passwd git clone git://git.kernel.org/pub/scm/utils/kup/kup.git
Wie funktioniert es Schädlicher Code wird in den
<span> -Block eingefügt, der mithilfe von CSS aus dem Sichtfeld des Benutzers verschoben wird.
Der Einfügemodus in Klammern ist eindeutig darauf ausgelegt, solche Angriffe zu neutralisieren. In diesem Modus schließen die Terminals den eingefügten Text in ein Paar spezieller Escape-Sequenzen ein, um die Shell über die Herkunft dieses Textes zu informieren. Die Shell erhält also ein Signal, dass sie Sonderzeichen, die der eingefügte Text enthalten kann, ignorieren kann. Alle Terminals bis zum ehrwürdigen xterm unterstützen diese Funktion, aber das Einfügen im Klammermodus erfordert die Unterstützung einer Shell oder Anwendung, die auf dem Terminal ausgeführt wird. Beispielsweise benötigt Software, die die
GNU Readline (denselben Bash) verwendet, eine
~ / .inputrc-Datei :
set enable-bracketed-paste on
Leider zeigt die Horn-Testseite auch, wie Sie diesen Schutz umgehen können, indem Sie den Text selbst formatieren und die Anwendung des Klammermodus vorzeitig beenden. Dies funktioniert, weil einige Terminals Escape-Sequenzen nicht korrekt filtern, bevor sie ihre eigenen hinzufügen. Zum Beispiel konnte ich in meinem Fall die Konsolentests nicht erfolgreich abschließen, selbst wenn die korrekte Konfiguration der
.inputrc- Datei berücksichtigt wurde. Dies bedeutet, dass Sie aufgrund einer nicht unterstützten Anwendung oder einer nicht ordnungsgemäß konfigurierten Shell leicht Systemkonfigurationsschäden erleiden können. Dies ist besonders gefährlich, wenn Sie Remote-Server betreten, bei denen ein sorgfältiges Studium der Konfiguration weniger häufig ist, insbesondere wenn Sie über viele solcher Remote-Computer verfügen.
Eine gute Lösung für dieses Problem ist das Plugin zur Bestätigung des Einfügens für das
urxvt- Terminal, das lediglich um Erlaubnis zum Einfügen von Text mit neuen Zeilen bittet. Ich habe keine sicherere Option für den von Horn beschriebenen Textangriff gefunden.
Registerkarten und Profile
Eine beliebte Funktion ist jetzt die Unterstützung einer Oberfläche mit Registerkarten, die wir als ein Terminalfenster definieren, das einige weitere Terminals enthält. Für verschiedene Terminals ist diese Funktion unterschiedlich, und obwohl herkömmliche Terminals wie xterm überhaupt keine Registerkarten unterstützen, verfügen modernere Terminal-Inkarnationen, die durch Xfce Terminal, GNOME Terminal und Konsole dargestellt werden, über diese Funktion. Urxvt unterstützt auch Registerkarten, allerdings nur, wenn das Plugin verwendet wird. In Bezug auf die Unterstützung von Registerkarten als solche ist Terminator der unbestrittene Marktführer: Es unterstützt nicht nur Registerkarten, sondern kann Terminals auch in beliebiger Reihenfolge anordnen (siehe Abbildung unten).

Ein weiteres Merkmal von Terminator ist die Möglichkeit, diese Registerkarten zu "gruppieren" und dieselben Tastenanschläge gleichzeitig an mehrere Terminals zu senden. Dies bietet ein grobes Tool für die gleichzeitige Ausführung von Massenoperationen auf mehreren Servern. Eine ähnliche Funktion ist auch in Konsole implementiert. Um diese Funktion in anderen Terminals verwenden zu können, müssen Sie Software von Drittanbietern wie
Cluster SSH ,
xlax oder
tmux verwenden .
Registerkarten funktionieren besonders gut mit Profilen: Sie können beispielsweise eine Registerkarte für E-Mail, eine andere für Chat usw. verwenden. Dies wird von Konsole und GNOME Terminal gut unterstützt. In beiden Fällen kann jede Registerkarte ihr Profil automatisch starten. Terminator unterstützt auch Profile, aber ich konnte keine Möglichkeit finden, bestimmte Programme automatisch zu starten, wenn ich eine bestimmte Registerkarte öffne. Andere Terminals haben überhaupt nicht das Konzept eines Profils.
Ryushechki
Das Letzte, was ich im ersten Teil dieses Artikels betrachten werde, ist das Erscheinungsbild der Terminals. Beispielsweise unterstützen GNOME, Xfce und urxvt die Transparenz, haben jedoch kürzlich die Unterstützung für Hintergrundbilder eingestellt und einige Benutzer
gezwungen , zum
Tilix- Terminal zu wechseln. Persönlich bin ich nur mit
Xresources zufrieden , das die grundlegenden Hintergrundfarben für urxvt festlegt. Benutzerdefinierte Farbthemen können jedoch Probleme verursachen. Beispielsweise
funktioniert Solarized nicht mit
htop- und
IPTraf-Anwendungen , da diese bereits ihre eigenen Farben verwenden.
Das ursprüngliche VT100-Terminal unterstützte keine Farben, und die neuen waren häufig auf eine Palette mit 256 Farben beschränkt. Für fortgeschrittene Benutzer, die ihre Terminals formatieren, können Shell-Anforderungen oder Statusleisten auf komplexe Weise eine unangenehme Einschränkung darstellen.
Gist verfolgt, welche Terminals True Color-Unterstützung bieten. Meine Tests bestätigen, dass st-, Alacritty- und VTE-basierte Terminals True Color perfekt unterstützen. Andere Terminals fühlen sich in dieser Hinsicht nicht sehr gut an und zeigen nicht einmal 256 Farben an. Unten sehen Sie den Unterschied zwischen der True Color-Unterstützung in GNOME-, st- und xterm-Terminals, die mit ihrer 256-Farben-Palette gute Arbeit leisten, und urxvt, das den Test nicht nur nicht besteht, sondern stattdessen sogar einige blinkende Zeichen anzeigt sie.

Einige Terminals analysieren auch Text auf URL-Muster, um Links anklickbar zu machen. Dies gilt für alle von VTE abgeleiteten Terminals, während urxvt ein spezielles Plug-In benötigt, das URLs mit einem Klick oder einer Tastenkombination transformiert. Andere Terminals, die ich getestet habe, zeigen URLs auf andere Weise an.
Ein neuer Trend für Terminals ist schließlich die Option Bildlaufpuffer. Zum Beispiel gibt es in st keinen Bildlaufpuffer; Es wird davon ausgegangen, dass der Benutzer einen Terminal-Multiplexer wie tmux und
GNU Screen verwendet .
Alacritty fehlen auch Reverse-Scroll-Puffer, aber die Unterstützung
wird in Kürze aufgrund des "umfassenden Feedbacks" der Benutzer zu diesem Thema
hinzugefügt . Zusätzlich zu diesen Upstarts unterstützt jedes Terminal, das ich getestet habe und das ich finden konnte, das Rückwärts-Scrollen.
Zwischensummen
Im zweiten Teil des Materials (
im Original waren dies zwei verschiedene Artikel - ca. Per. ) Wir werden Leistung, Speichernutzung und Verzögerung vergleichen. Wir sehen jedoch bereits, dass einige der fraglichen Terminals schwerwiegende Mängel aufweisen. Beispielsweise können Benutzer, die regelmäßig mit RTL-Skripten arbeiten, auf mlterm und pterm achten, da sie solche Aufgaben besser bewältigen als andere. Konsole schnitt ebenfalls gut ab. Benutzer, die nicht mit RTL-Skripten arbeiten, können etwas anderes auswählen.
Unter dem Gesichtspunkt der Sicherheit gegen das Einfügen von Schadcode zeichnet sich urxvt durch die besondere Implementierung des Schutzes gegen diese Art von Angriff aus, was mir auf jeden Fall zweckmäßig erscheint. Wer auf der Suche nach Schnickschnack ist, sollte sich Konsole ansehen. Schließlich ist anzumerken, dass VTE eine hervorragende Basis für Terminals ist, die Farbunterstützung, URL-Erkennung usw. garantiert. Auf den ersten Blick kann das Standardterminal, das mit Ihrer bevorzugten Umgebung geliefert wird, alle Anforderungen erfüllen. Lassen Sie diese Frage jedoch offen, bis wir die Leistung herausgefunden haben.
Setzen Sie das Gespräch fort
Im Allgemeinen scheint die Terminalleistung an sich ein weit hergeholtes Problem zu sein. Wie sich jedoch herausstellte, weisen einige von ihnen eine überraschend große Verzögerung für Software dieses grundlegenden Typs auf. Wir werden uns auch genauer mit der sogenannten "Geschwindigkeit" (tatsächlich der Bildlaufgeschwindigkeit) und dem Speicherverbrauch des Terminals befassen (wenn man bedenkt, dass dies heute nicht mehr so kritisch ist wie vor Jahrzehnten).
Verzögerung
Nach einer gründlichen Untersuchung der Terminalleistung kam ich zu dem Schluss, dass der wichtigste Parameter in dieser Hinsicht die Verzögerungsgröße (Ping) ist. In seinem Artikel
„Wir drucken gerne“ untersuchte Pavel Fatin die Verzögerung verschiedener Texteditoren und deutete an, dass Terminals in dieser Hinsicht langsamer arbeiten können als die schnellsten Texteditoren. Es war dieser Hinweis, der mich letztendlich dazu brachte, meine eigenen Tests zu starten und diesen Artikel zu schreiben.
Aber was ist eine Verzögerung und warum ist sie so wichtig? In seinem Artikel definierte Fatin es als "die Verzögerung zwischen dem Drücken einer Taste und der entsprechenden Bildschirmaktualisierung" und zitierte das
"Handbuch zur Mensch-Computer-Interaktion" mit den Worten: "Die Verzögerung der visuellen Rückmeldung auf dem Computerbildschirm hat einen wichtigen Einfluss auf das Verhalten der Schreibkraft und ihre Zufriedenheit ".
Fatin erklärt, dass ein solcher Ping tiefere Konsequenzen hat als nur die Zufriedenheit: „Das Tippen wird langsamer, es treten mehr Fehler auf, die Augen- und Muskelverspannungen nehmen zu.“ Mit anderen Worten, eine große Verzögerung kann zu Tippfehlern sowie zu einer Verschlechterung der Codequalität führen, da dies zu einer zusätzlichen kognitiven Belastung des Gehirns führt. Aber noch schlimmer, Ping "erhöht die Spannung der Augen und Muskeln", was anscheinend die
Entwicklung von Berufsverletzungen in der Zukunft impliziert (
anscheinend meint der Autor Probleme mit den Muskeln der Augen, des Rückens, der Arme und natürlich des Sehvermögens, - ca. Per. ) Aufgrund wiederholter Beanspruchung.
Einige dieser Effekte sind seit langem bekannt, und die Ergebnisse einer 1976 in der Zeitschrift Ergonomics veröffentlichten
Studie besagen, dass eine Verzögerung von 100 Millisekunden "die Wählgeschwindigkeit erheblich verschlechtert". In jüngerer
Zeit wurde im GNOME-Benutzerhandbuch
eine akzeptable Antwortzeit von 10 Millisekunden eingeführt. Wenn wir weiter gehen, zeigt
Microsoft Research , dass 1 Millisekunde ideal ist.
Fatin führte seine Tests an Texteditoren durch; Er hat ein tragbares Tool namens
Typometer erstellt , mit dem ich Ping in Terminalemulatoren getestet habe. Beachten Sie, dass der Test im Simulationsmodus durchgeführt wurde: In der Realität müssen wir auch die Eingangsverzögerung (Tastatur, USB-Controller usw.) und die Ausgabe (Grafikkartenpuffer, Monitor) berücksichtigen. Laut Fatin sind es in typischen Konfigurationen etwa 20 ms. Wenn Sie über Spielgeräte verfügen, können Sie einen Indikator von nur 3 Millisekunden erreichen. Da wir bereits über so schnelle Geräte verfügen, sollte die Anwendung auch keine Verzögerung einführen. Das Ziel von Fatin ist es, die Anwendung um bis zu 1 Millisekunde zu verzögern oder das Wählen ohne
messbare Verzögerung zu erreichen, wie in
IntelliJ IDEA 15 .
Und hier sind die Ergebnisse meiner Messungen sowie einige Ergebnisse von Fatin, um zu zeigen, dass mein Experiment mit seinen Tests übereinstimmt:

Das erste, was mir auffiel, war die beste Reaktionszeit für ältere Programme wie xterm und mlterm. Mit der schlechtesten Registerlatenz (2,4 ms) zeigten sie bessere Ergebnisse als das schnellste moderne Terminal (10,6 ms für st). Kein einziges modernes Terminal unterschreitet einen Schwellenwert von 10 Millisekunden. Insbesondere erfüllt Alacritty nicht die Anforderungen für den „schnellsten vorhandenen Terminalemulator“, obwohl sich seine Ergebnisse seit der ersten Überprüfung im Jahr 2017 verbessert haben. In der Tat sind sich die Autoren des Projekts
der Situation bewusst und arbeiten daran, die Anzeige zu verbessern. Es sollte auch beachtet werden, dass Vim, das GTK3 verwendet, eine Größenordnung langsamer ist als sein GTK2-Gegenstück. Daraus können wir schließen, dass GTK3 eine zusätzliche Verzögerung erzeugt, was sich in allen anderen Terminals widerspiegelt, die es verwenden (Terminator, Xfce4-Terminal und GNOME-Terminal).
Unterschiede sind jedoch möglicherweise für das Auge nicht sichtbar. Wie Fatin erklärt: "Es ist nicht notwendig, sich der Verzögerung bewusst zu sein, damit sie sich auf Sie auswirkt." Fatin warnt auch vor einer Standardabweichung: "Unregelmäßigkeiten in der Länge der Verzögerung (Jitter) verursachen aufgrund ihrer Unvorhersehbarkeit eine zusätzliche Belastung."

Die obige Grafik wurde auf reinem Debian 9 (Stretch) mit dem
i3-Fenstermanager aufgenommen . Diese Umgebung liefert die besten Ergebnisse bei Verzögerungstests. Wie sich herausstellte, erzeugt GNOME einen zusätzlichen Ping von 20 ms für alle Dimensionen. Eine mögliche Erklärung hierfür ist das Vorhandensein von Programmen mit synchroner Verarbeitung von Eingabeereignissen. Fatin
führt für diesen Fall ein
Workrave- Beispiel an, das eine Verzögerung hinzufügt, indem alle Eingabeereignisse synchron verarbeitet werden. Standardmäßig verfügt GNOME auch über einen
Mutter- Fenstermanager, der eine zusätzliche Pufferstufe erstellt, die sich auf den Ping auswirkt und eine Verzögerung von mindestens 8 Millisekunden hinzufügt.

Bildlaufgeschwindigkeit
Der nächste Test ist der herkömmliche Geschwindigkeits- oder Bandbreitentest, bei dem gemessen wird, wie schnell das Terminal durch eine Seite scrollen kann und eine große Textmenge auf dem Bildschirm anzeigt. Die Mechanik des Tests variiert; Der ursprüngliche Test bestand darin, mit dem Befehl seq dieselbe Textzeichenfolge zu generieren. Andere Tests umfassen einen Test von Thomas E. Dickey (dem xterm-Betreuer), der
die Datei terminfo.src wiederholt
herunterlädt . In einer anderen Überprüfung der Terminalleistung verwendet
Den Luu eine Base32-codierte Zeichenfolge aus zufälligen Bytes, die mit cat an das Terminal ausgegeben wird. Luu hält einen solchen Test für „so nutzlos, wie man es sich vorstellen kann“ und schlägt vor, stattdessen die Reaktion des Terminals als Hauptindikator zu verwenden. Dickey nennt seinen Test auch irreführend. Beide Autoren erkennen jedoch an, dass die Bandbreite des Terminalfensters ein Problem sein kann. Luu stellte fest, dass Emacs Eshell beim Anzeigen großer Dateien einfrierte, und Dickie optimierte das Terminal, um die visuelle Langsamkeit von xtrerm zu beseitigen. Daher gibt es immer noch einen Grund für diesen Test, aber da der Renderprozess von Terminal zu Terminal sehr unterschiedlich ist, kann er auch als Testkomponente zum Überprüfen anderer Parameter verwendet werden.

Hier sehen wir, dass rxvt und st der Konkurrenz voraus sind, gefolgt von der viel neueren Alacritty, die mit Fokus auf Geschwindigkeit entwickelt wird. Als nächstes kommen Xfce (die VTE-Familie) und Konsole, die fast doppelt so schnell arbeiten. Der letzte ist xterm mit einem Index, der fünfmal langsamer als rxvt ist. Während des Tests, xterm auch wellig, war es schwierig, den übergebenen Text zu sehen, selbst wenn es die gleiche Zeile war. Konsole stellte sich als schnell heraus, aber manchmal war es „schwierig“: Das Display hing von Zeit zu Zeit und zeigte den Text teilweise oder gar nicht an. Andere Terminals zeigten deutlich Zeichenfolgen an, einschließlich st, Alacritty und rxvt.
Dickie erklärt, dass Leistungsunterschiede mit dem Design von Bildlaufpuffern in verschiedenen Terminals zusammenhängen. Insbesondere beschuldigt er rxvt und andere Terminals, „die allgemeinen Regeln nicht zu befolgen“:
„Im Gegensatz zu xterm hat rxvt nicht versucht, alle Updates anzuzeigen. Wenn er zurückfällt, wird er einige Updates verwerfen, um aufzuholen. Dies hatte einen größeren Einfluss auf die imaginäre Bildlaufgeschwindigkeit als auf die Organisation des internen Speichers. Ein Nachteil war, dass die ASCII-Animation etwas ungenau war. “
Um diese scheinbare Langsamkeit von xterm zu korrigieren, schlägt Dickey vor, die
fastScroll- Ressource zu verwenden, mit der xterm einige Bildschirmaktualisierungen verwerfen kann, um mit dem Stream Schritt zu halten. Meine Tests bestätigen, dass fastScroll die Leistung verbessert und xterm auf das gleiche Niveau wie rxvt bringt. Dies ist jedoch eine ziemlich grobe Krücke, wie Dickey selbst erklärt: "Manchmal scheint xterm - wie die Konsole - anzuhalten, da es eine Reihe neuer Bildschirmaktualisierungen erwartet, nachdem einige von ihnen gelöscht wurden." In diesem Sinne scheinen andere Terminals den besten Kompromiss zwischen Geschwindigkeit und Anzeigeintegrität gefunden zu haben.
Ressourcenverbrauch
Unabhängig von der Angemessenheit, die Bildlaufgeschwindigkeit als Leistungsindikator zu betrachten, können Sie mit diesem Test die Belastung der Terminals simulieren, wodurch wir wiederum andere Parameter wie den Speicher oder die Festplattennutzung messen können. Metriken wurden erhalten, indem der angegebene
seq- Test unter der Überwachung des Python-Prozesses ausgeführt wurde. Er sammelte
getrusage () -Zählerdaten für
ru_maxrss , die Summe von
ru_oublock und
ru_inblock sowie einen einfachen Timer.

In diesem Test belegt ST den ersten Platz mit dem geringsten durchschnittlichen Speicherverbrauch von 8 MB, was nicht verwunderlich ist, wenn man bedenkt, dass die Hauptidee des Projekts die Einfachheit ist. Mlterm, xterm und rxvt verbrauchen etwas mehr - ungefähr 12 MB. Alacritty hat ein weiteres bemerkenswertes Ergebnis, für dessen Arbeit 30 MB erforderlich sind. Dann gibt es Terminals der VTE-Familie mit Indikatoren von 40 bis 60 MB, was ziemlich viel ist. Ein solcher Verbrauch kann durch die Tatsache erklärt werden, dass diese Terminals übergeordnete Bibliotheken verwenden, beispielsweise GTK. Konsole hat zuletzt einen enormen Speicherverbrauch von 65 MB bei Tests, obwohl dies durch seinen sehr breiten Funktionsumfang gerechtfertigt werden kann.
Im Vergleich zu früheren Ergebnissen vor zehn Jahren verbrauchten alle Programme deutlich mehr Speicher. Früher benötigte Xterm 4 MB, jetzt jedoch 15 MB, um ausgeführt zu werden. Rxvt hat einen ähnlichen Anstieg des Verbrauchs, der jetzt sofort 16 MB benötigt. Das Xfce-Terminal belegt 34 MB, was dreimal so viel ist wie zuvor, aber das GNOME-Terminal benötigt nur 20 MB. Natürlich wurden alle vorherigen Tests auf einer 32-Bit-Architektur durchgeführt. Bei der Ökobilanz 2012
sagte Rusty Russell
, dass es viele subtilere Gründe gibt, die den Anstieg des Speicherverbrauchs erklären können. Mit all dem leben wir jetzt in einer Zeit, in der wir ganze Gigabyte Speicher haben, also können wir irgendwie damit umgehen.
Trotzdem kann ich nicht anders, als das Gefühl zu haben, dass das Zuweisen von mehr Speicher zu solch grundlegender Software wie einem Terminal eine Verschwendung von Ressourcen ist. , «», , - , Linux- ( , ). , . , GNOME Terminal, Konsole, urxvt, Terminator Xfce Terminal Daemon-, , .

-: , , . , VTE (
2010 , ). , , , AES256 GCM (
0.39.2 ). , VTE, …
, VTE , , . , VTE- Daemon-, . , , , - , . VTE (), GNOME. , VTE . , Linux , . - . , xterm mlterm 10 , .
, - Linux . , . , Wayland : Typometer, , , Wayland — . , Wayland , X.org, , - .