Iwwersiicht vun Terminal Emulatoren

E puer Wierder vun eisem Iwwersetzungsbüro: normalerweis beméit jiddereen sech fir déi lescht Materialien a Publikatiounen ze iwwersetzen, a mir si keng Ausnahm. Awer Terminaler sinn net eppes wat eemol d'Woch aktualiséiert gëtt. Dofir hu mir Iech en Artikel vum Antoine Beaupré iwwersat, deen am Fréijoer 2018 publizéiert gouf: trotz sengem bedeitende "Alter" no modernen Normen, huet d'Material eiser Meenung no guer net seng Relevanz verluer. Ausserdeem war dëst ursprénglech eng Serie vun zwee Artikelen, awer mir hu beschloss se an ee grousse Post ze kombinéieren.

Iwwersiicht vun Terminal Emulatoren

Terminals hunn eng speziell Plaz an der Computergeschicht, awer an de leschte Joerzéngte si se gezwongen niewent der Kommandozeil ze iwwerliewen wéi grafesch Interfaces ubiquitär ginn. Terminal Emulatoren hir eege ersat Hardware Bridder, déi, ofwiesselnd, eng Ännerung vu Systemer waren op Basis vu gepunchte Kaarten an Toggle Switches. Modern Verdeelunge kommen mat enger Vielfalt vun Terminalemulatoren vun alle Formen a Faarwen. A wa vill zefridde si mam Standard-Terminal, deen vun hirem Aarbechtsëmfeld geliwwert gëtt, benotzen e puer houfreg exotesch Software fir hir Liiblingsshell oder Texteditor ze lafen. Awer, wéi mir aus dësem Artikel gesinn, sinn net all Terminaler am selwechte Bild erstallt: si ënnerscheede sech staark an der Funktionalitéit, der Gréisst an der Leeschtung.

E puer Terminaler hunn direkt iwwerraschend Sécherheetslächer, plus déi meescht hunn e komplett anere Set vu Funktiounen, vun Ënnerstëtzung fir eng Tabs-Interface bis Skript. Obwuel mir an der wäiter Vergaangenheet op Terminalemulatoren gekuckt, dësen Artikel ass en Update vum fréiere Material dat de Lieser hëllefe wäert bestëmmen wéi eng Terminal fir 2018 ze benotzen. Déi éischt Halschent vum Artikel vergläicht Fonctiounen, an der zweeter Halschent evaluéiert Leeschtung.

Hei sinn d'Terminaler déi ech iwwerpréift hunn:

Iwwersiicht vun Terminal Emulatoren

Dëst sinn vläicht net déi lescht Versiounen, well ech war limitéiert op stabil Builds am Moment vum Schreiwen, déi ech konnt op Debian 9 oder Fedora 27 ausrollen. Déi eenzeg Ausnam ass Alacritty. Et ass en Nofolger vun GPU-beschleunegt Terminaler a gëtt an enger ongewéinlecher an neier Sprooch fir dës Aufgab geschriwwe - Rust. Ech hunn Webterminaler aus menger Iwwerpréiwung ausgeschloss (inklusiv déi op Electron), well virleefeg Tester hir extrem schlecht Leeschtung gewisen hunn.

Unicode Ënnerstëtzung

Ech hunn meng Tester mat Unicode Support ugefaang. Den éischten Test vun den Terminals war d'Unicode String ze weisen Wikipedia Artikelen: "é, Δ, И, K, م, ๗, あ, 叶, 葉 und 말." Dësen einfachen Test weist ob den Terminal weltwäit richteg funktionnéiert. xterm Terminal weist keen arabesche Charakter Erënnerung an der Standardkonfiguratioun:

Iwwersiicht vun Terminal Emulatoren

Par défaut benotzt xterm déi klassesch "fix" Schrëft, déi laut nach déi selwecht Vicki, huet "substantiell Unicode Ofdeckung zënter 1997". Et gëtt eppes an dëser Schrëft geschitt, déi verursaacht datt de Charakter als eidel Frame erschéngt an et ass nëmme wann d'Text Schrëft op 20+ Punkte erhéicht gëtt, datt de Charakter endlech richteg ufänkt ze weisen. Wéi och ëmmer, dësen "Fix" brécht d'Display vun aneren Unicode Charaktere:

Iwwersiicht vun Terminal Emulatoren

Dës Screenshots goufen a Fedora 27 geholl, well et besser Resultater ginn huet wéi Debian 9, wou e puer eeler Versioune vun Terminals (speziell mlterm) d'Schrëft net richteg handhaben konnten. Glécklecherweis gouf dëst a spéider Versioune fixéiert.

Notéiert elo wéi d'Linn an xterm ugewise gëtt. Et stellt sech eraus datt d'Symbol Mem an déi folgend Semitesch qoph kuckt op RTL-Stil Scripten (riets-ze-lénks), also technesch solle se vu riets op lénks ugewise ginn. Webbrowser wéi Firefox 57 handhaben déi uewe genannte Linn richteg. Eng méi einfach Versioun vum RTL-Text ass d'Wuert "Sarah"op Hebräesch (Schra). Wiki Säit op bidirektionalen Texter seet déi folgend:

"Vill Computerprogrammer kënnen net bidirektionalen Text korrekt weisen. Zum Beispill, den hebräeschen Numm "Sarah" besteet aus de Personnagen sin (ש) (déi riets erschéngt), dann resh (ר) a schliisslech hien (ה) (wat lénks soll erschéngen)."

Vill Terminaler feelen dësen Test: Alacritty, VTE-ofgeleet Gnome an XFCE Terminals, urxvt, st an xterm weisen "Sara" an ëmgedréint Uerdnung, wéi wa mir den Numm als "Aras" geschriwwen hätten.

Iwwersiicht vun Terminal Emulatoren

En anere Problem mat bidirektionalen Texter ass, datt se iergendwéi ausgeriicht musse ginn, besonnesch wann et ëm d'Mëschung vun RTL an LTR Texter geet. RTL Skripte solle vun der rietser Säit vun der Terminalfenster lafen, awer wat soll fir Terminaler geschéien déi Standard op LTR Englesch sinn? Déi meescht vun hinnen hu keng speziell Mechanismen an alignéieren all Text no lénks (och a Konsole). D'Ausnahmen si pterm a mlterm, déi un d'Standarden halen a sou Linnen richteg ausriichten.

Iwwersiicht vun Terminal Emulatoren

Aféierungsschutz

Déi nächst kritesch Feature déi ech identifizéiert hunn ass Anti-Insertion Schutz. Och wann et allgemeng bekannt ass datt Zauber wéi:

$ curl http://example.com/ | sh

sinn Code Ausféierung Push Kommandoen, wéineg Leit wëssen datt verstoppte Kommandoen an d'Konsole kënne schneide wann Dir aus engem Webbrowser kopéiert a paste, och no virsiichteg Inspektioun. Verifikatioun Site Gianna Horna genial weist wéi onschëlleg ausgesinn de Kommando ass:

git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git

verwandelt sech zu sou enger Nuis wann se vun der Horn Websäit an den Terminal gepecht ginn:

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

Wéi funktionéiert et? Béiswëlleg Code ass am Block abegraff , déi mat CSS aus der Sicht vum Benotzer geréckelt gëtt.

Klammer Paste Modus ass kloer entwéckelt fir sou Attacken ze neutraliséieren. An dësem Modus ëmschléissen d'Terminaler de gepaakten Text an e puer speziell Fluchsequenzen fir d'Schuel iwwer den Urspronk vum Text ze soen. Dëst seet der Shell datt et speziell Zeechen ignoréiere kann, déi de pasted Text enthalen kann. All Terminals zréck op de éierleche xterm ënnerstëtzen dës Feature, awer Paste am Bracketed Modus erfuerdert Ënnerstëtzung vun der Shell oder der Applikatioun déi um Terminal leeft. Zum Beispill, Software benotzt GNU Lieslinn (selwecht Bash), brauch eng Datei ~/.inputrc:

set enable-bracketed-paste on

Leider weist dem Horn säin Test Site och wéi een dëse Schutz duerch d'Textformatéierung selwer ëmgoe kann a virzäiteg endlech de Bracketed Modus op et applizéiert. Dëst funktionnéiert well e puer Terminaler net korrekt Fluchsequenzen filteren ier se hir eege bäidroen. Zum Beispill, a menger konnt ech ni d'Konsole Tester erfollegräich fäerdeg maachen och mat der korrekter Konfiguratioun .inputrc Fichier. Dëst bedeit datt Dir Är Systemkonfiguratioun einfach beschiedegt kritt wéinst enger net ënnerstëtzter Applikatioun oder enger falsch konfiguréierter Shell. Dëst ass besonnesch geféierlech wann Dir op Remote Server aloggen, wou virsiichteg Konfiguratiounsaarbecht manner heefeg ass, besonnesch wann Dir vill sou Remote Maschinnen hutt.

Eng gutt Léisung fir dëse Problem ass de Paste Bestätegung Plugin fir den Terminal urxvt, déi einfach d'Erlaabnis freet fir all Text anzeginn, deen Neilinnen enthält. Ech hu keng méi sécher Optioun fir den Text Ugrëff vun Horn beschriwwen fonnt.

Tabs a Profiler

Eng populär Feature ass elo Ënnerstëtzung fir eng Tabs-Interface, déi mir als eng Terminalfenster definéieren déi e puer méi Terminals enthält. Dës Funktioun ënnerscheet sech fir verschidden Terminals, an obwuel traditionell xterm-Terminaler guer net Tabs ënnerstëtzen, méi modern Terminal-Inkarnatiounen wéi Xfce Terminal, GNOME Terminal a Konsole hunn dës Funktioun. Urxvt ënnerstëtzt och Tabs, awer nëmmen wann Dir e Plugin benotzt. Awer wat d'Tab-Ënnerstëtzung selwer ugeet, Terminator ass den onbestriddene Leader: et ënnerstëtzt net nëmmen Tabs, awer kann och Terminaler an all Uerdnung arrangéieren (kuckt Bild hei ënnen).

Iwwersiicht vun Terminal Emulatoren

Eng aner Feature vum Terminator ass d'Fäegkeet dës Tabs zesummen ze "gruppéieren" an déiselwecht Tastekombinatiounen op verschidde Terminaler zur selwechter Zäit ze schécken, e rau Tool ubitt fir bulk Operatiounen op verschidde Server gläichzäiteg auszeféieren. Eng ähnlech Feature gëtt och a Konsole implementéiert. Fir dës Fonktioun an anere Terminals ze benotzen, musst Dir Drëtt Partei Software benotzen wéi z Cluster SSH, xlax oder tmux.

Tabs funktionnéieren besonnesch gutt wann se mat Profiler gepaart sinn: zum Beispill, Dir kënnt eng Tab fir E-Mail hunn, eng aner fir Chat, a sou weider. Dëst gëtt gutt ënnerstëtzt vum Konsole Terminal an GNOME Terminal. Béid erlaben all Tab automatesch säin eegene Profil ze starten. Terminator ënnerstëtzt och Profiler, awer ech konnt kee Wee fannen fir automatesch verschidde Programmer ze starten wann Dir eng spezifesch Tab opmaacht. Aner Terminaler hunn guer net d'Konzept vum "Profil".

Ruffles

Dat lescht wat ech am éischten Deel vun dësem Artikel ofdecken ass d'Erscheinung vun den Terminals. Zum Beispill GNOME, Xfce an urxvt ënnerstëtzen Transparenz, awer hu viru kuerzem d'Ënnerstëtzung fir Hannergrondbiller erofgelooss, wat e puer Benotzer forcéiere fir op den Terminal ze wiesselen Tilix. Perséinlech sinn ech frou dermat an et ass einfach xresources, déi d'Basisset vun Hannergrondfaarwe fir urxvt setzt. Wéi och ëmmer, net-Standard Faarfthemen kënnen och Probleemer kreéieren. Zum Beispill, Solariséiert geet net mat Applikatiounen htop и IPTraf, well se schonn hir eege Faarwen benotzen.

Original VT100 Terminal huet keng Faarwen ënnerstëtzt, an nei goufen dacks op eng 256-Faarf Palette limitéiert. Fir fortgeschratt Benotzer déi hir Terminaler stiléieren, Shell-Prompts oder Statusbaren op komplexe Weeër kënnen eng lästeg Begrenzung sinn. Gist Bunnen déi Terminals hunn "True Color" Ënnerstëtzung. Meng Tester bestätegen datt st, Alacritty an VTE-baséiert Terminals True Color perfekt ënnerstëtzen. Aner Terminaler maachen et net ganz gutt an dëser Hisiicht a weisen tatsächlech net emol 256 Faarwen. Drënner kënnt Dir den Ënnerscheed tëscht True Color Support an GNOME-Terminaler gesinn, st an xterm, déi eng gutt Aarbecht dovun maachen mat hirer 256 Faarfpalette, an urxvt, déi net nëmmen den Test feelt, awer och e puer blénkeg Charaktere weist amplaz hinnen.

Iwwersiicht vun Terminal Emulatoren

E puer Terminaler analyséieren och Text fir URL Mustere fir Links klickbar ze maachen. Dëst gëllt fir all VTE-ofgeleet Terminaler, während urxvt e spezielle Plugin erfuerdert deen d'URLen op engem Klick transforméiere géif oder eng Tastatur Ofkiirzung benotzt. Aner Terminaler hunn ech Display URLen op aner Manéier getest.

Schlussendlech ass en neien Trend an den Terminals d'Optionalitéit vum Scrollbuffer. Zum Beispill, St huet keng Scrollbuffer; Et gëtt ugeholl datt de Benotzer en Terminalmultiplexer wéi tmux an GNU Écran.

Alacritty feelt och backscrollbuffere, mä wäert geschwënn dobäi ginn seng Ënnerstëtzung wéinst "extensiv Feedback" iwwer dëst Thema vun de Benotzer. Ofgesi vun dësen Upstarts, ënnerstëtzt all Terminal, deen ech getest hunn, datt ech fonnt hunn, ëmgedréint Scrollen.

Subtotals

Am zweeten Deel vum Material (am Original waren dat zwee verschidden Artikelen - ca. laan) mir wäerte Leeschtung, Erënnerung Benotzen an latency vergläichen. Awer mir kënne scho gesinn datt e puer vun de betreffend Terminaler sérieux Defiziter hunn. Zum Beispill, Benotzer déi reegelméisseg mat RTL Scripte schaffen, wëlle vläicht mlterm a pterm berücksichtegen, well se besser mat ähnlechen Aufgaben ëmgoen wéi anerer. Konsole huet och gutt gemaach. Benotzer déi net mat RTL Scripte schaffen, kënnen eppes anescht wielen.

Wat de Schutz géint béiswëlleg Code-Insertioun ugeet, steet urxvt aus wéinst senger spezieller Implementatioun vum Schutz géint dës Zort Attack, wat mir definitiv bequem schéngt. Fir déi, déi no e puer Klacken sichen, ass Konsole e Bléck wäert. Schlussendlech ass et derwäert ze bemierken datt VTE eng exzellent Basis fir Terminals ass, déi Faarfsupport, URL-Unerkennung, asw. Op den éischte Bléck kann den Default-Terminal, deen mat Ärem Liiblingsëmfeld kënnt, all Ufuerderunge entspriechen, awer loosst eis dës Fro oppen loossen bis mir d'Leeschtung verstinn.

Loosst eis d'Gespréich weiderféieren


Am Allgemengen kann d'Performance vun den Terminals u sech wéi e wäitgehend Problem schéngen, awer wéi et sech erausstellt, weisen e puer vun hinnen iwwerraschend héich Latenz fir Software vun esou engem fundamentalen Typ. Och nächst wäerte mir kucken wat traditionell "Geschwindegkeet" genannt gëtt (tatsächlech ass dëst d'Scrollgeschwindegkeet) an d'Erënnerungsverbrauch vum Terminal (mat der Viraussetzung datt dëst haut net sou kritesch ass wéi et viru Joerzéngte war).

Verzögerung

No enger grëndlecher Studie vun der terminaler Leeschtung sinn ech zur Conclusioun komm datt de wichtegste Parameter an dëser Hisiicht d'Latenz (Ping) ass. A sengem Artikel "Mir drécken mat Freed" De Pavel Fatin huet d'Latenz vu verschiddenen Texteditoren ugekuckt an ugedeit datt Terminals an dëser Hisiicht méi lues kënne sinn wéi déi schnellsten Texteditoren. Et war dësen Hiweis deen mech schlussendlech gefouert huet meng eegen Tester ze lafen an dësen Artikel ze schreiwen.

Awer wat ass latency, a firwat ass et sou wichteg? A sengem Artikel huet de Fatin et definéiert als "d'Verzögerung tëscht engem Schlëssel drécken an dem entspriechende Bildschiermupdate" an zitéiert "Guide fir Mënsch-Computer Interaktioun", déi seet: "D'Verzögerung vum visuellen Feedback op engem Computerdisplay huet e wichtegen Impakt op d'Typistverhalen an d'Zefriddenheet."

De Fatin erkläert datt dëse Ping méi déif Konsequenzen huet wéi just Zefriddenheet: "Tippen gëtt méi lues, méi Feeler entstinn, an d'Aen- a Muskelspannung erhéicht." An anere Wierder, eng grouss Verzögerung kann zu Tippfehler an och manner Codequalitéit féieren, well et zu zousätzlech kognitiv Belaaschtung am Gehir féiert. Awer wat méi schlëmm ass datt de Ping "Aen- a Muskelbelaaschtung erhéicht", wat schéngt ze implizéieren Entwécklung vu Beruffsverletzungen an Zukunft (Anscheinend heescht den Auteur Problemer mat den Aen Muskelen, Réck, Waffen an, natierlech, Visioun - ca. laan) wéinst repetitive Stress.

E puer vun dësen Effekter si scho laang bekannt, an d'Resultater Fuerschung, publizéiert zréck 1976 an der Zäitschrëft Ergonomics, sot, datt eng Verzögerung vun 100 Millisekonnen "däitlech d'Typgeschwindegkeet behënnert." Méi kuerzem huet de GNOME User Guide agefouert akzeptabel Äntwert Zäit an 10 Millisekonnen, a wann Dir weider geet, dann Microsoft Research weist datt 1 Millisekonnen ideal ass.

De Fatin huet seng Tester op Texteditoren gemaach; hien huet e portable Instrument erstallt genannt Typometer, déi ech benotzt hunn fir Ping an Terminalemulatoren ze testen. Denkt drun datt den Test am Simulatiounsmodus duerchgefouert gouf: an der Realitéit musse mir souwuel Input (Tastatur, USB Controller, etc.) an Ausgang (Videokartebuffer, Monitor) Latenz berücksichtegen. Laut Fatin ass et an typesche Konfiguratiounen ongeféier 20 ms. Wann Dir Spillausrüstung hutt, kënnt Dir dës Figur an nëmmen 3 Millisekonnen erreechen. Well mir scho sou séier Hardware hunn, muss d'Applikatioun net seng eege latency addéieren. Dem Fatin säin Zil ass d'Applikatiounslatenz op 1 Millisekonnen ze bréngen, oder souguer ouni Ziffer z'erreechen moossbar Verzögerung, wéi an IntelliJ IDEA 15.

Hei sinn d'Resultater vu menge Miessunge, souwéi e puer vun de Resultater vum Fatin, fir ze weisen datt mäi Experiment mat sengen Tester averstan ass:

Iwwersiicht vun Terminal Emulatoren

Dat éischt wat mech opgefaang huet war déi besser Äntwertzäit vun eelere Programmer wéi xterm a mlterm. Mat der schlëmmster Registerlatenz (2,4 ms), hunn se besser gemaach wéi de schnellsten modernen Terminal (10,6 ms fir st). Kee modernen Terminal fällt ënner der 10 Millisekonne Schwell. Besonnesch den Alacritty feelt dem "schnellsten Terminal Emulator verfügbar" Fuerderung, obwuel seng Partituren zënter senger éischter Iwwerpréiwung am Joer 2017 verbessert goufen. Tatsächlech d'Auteuren vum Projet bewosst vun der Situatioun a schaffen fir den Display ze verbesseren. Et soll och bemierkt ginn datt Vim benotzt GTK3 eng Uerdnung vun der Gréisst méi lues ass wéi säi GTK2 Géigespiller. Vun dësem kënne mir ofschléissen datt GTK3 zousätzlech Latenz erstellt, an dëst gëtt an all aner Terminaler reflektéiert déi se benotzen (Terminator, Xfce4 Terminal an GNOME Terminal).

Wéi och ëmmer, d'Ënnerscheeder kënnen net fir d'Ae bemierkbar sinn. Wéi de Fatin erkläert, "Dir musst d'Verzögerung net bewosst sinn fir datt et en Effekt op Iech huet." Fatin warnt och iwwer Standarddeviatioun: "All Stéierungen an der latency (jitter) kreéieren zousätzlech Stress wéinst hirer Onberechenbarkeet."

Iwwersiicht vun Terminal Emulatoren

D'Grafik uewendriwwer gëtt op reng Debian 9 geholl (stretch) mat i3 Fënster Manager. Dëst Ëmfeld produzéiert déi bescht Resultater an latency Tester. Wéi et sech erausstellt, erstellt GNOME en zousätzleche Ping vun 20 ms fir all Miessunge. Eng méiglech Erklärung dofir ass d'Präsenz vu Programmer mat synchroner Veraarbechtung vun Inputevenementer. Fatin gëtt e Beispill fir esou e Fall workrave, wat e Verzögerung bäidréit andeems all Input-Evenementer synchron veraarbecht ginn. Par défaut kënnt GNOME och mat engem Fënstermanager Mutter, wat eng zousätzlech Schicht vu Puffer erstellt, wat de Ping beaflosst an op d'mannst 8 Millisekonnen Latenz bäidréit.

Iwwersiicht vun Terminal Emulatoren

Scroll Geschwindegkeet

Den nächsten Test ass en traditionellen "Geschwindegkeet" oder "Bandbreed" Test, dee moosst wéi séier den Terminal eng Säit scrolle kann, wärend grouss Quantitéiten un Text um Bildschierm affichéiert. D'Mechanik vum Test variéieren; den ursprénglechen Test war einfach déiselwecht Textstring ze generéieren mam seq Kommando. Aner Tester och Thomas E. Dickey (xterm Ënnerhalter) Test, déi ëmmer erëm der terminfo.src Fichier erofgeluede. An enger anerer Iwwerpréiwung vun Terminal Leeschtung Den Luu benotzt eng base32 encodéiert String vun zoufälleg Bytes, déi op den Terminal mat der Katz erausgeet. De Luu betruecht esou en Test als "sou nëtzlos e Benchmark wéi ee sech ka virstellen" a proposéiert amplaz terminal Äntwert als primär Metrik ze benotzen. Den Dickey nennt säin Test och falsch. Wéi och ëmmer, béid Autoren unerkennen datt d'Terminalfensterbandbreedung en Thema ka sinn. De Luu huet den Emacs Eshell entdeckt wann se grouss Dateien ugewisen hunn, an den Dickey huet den Terminal optimiséiert fir dem xtrerm seng visuell Schlässegkeet ze läschen. Also et ass nach ëmmer e Verdéngscht fir dësen Test, awer well de Renderingprozess ganz anescht ass vun Terminal zu Terminal, kann et och als Testkomponent benotzt ginn fir aner Parameteren ze testen.

Iwwersiicht vun Terminal Emulatoren

Hei gesi mir d'rxvt an st zéien virun der Konkurrenz, gefollegt vun der vill méi nei Alacritty, déi mat engem Fokus op Leeschtung entworf ass. Nächst sinn Xfce (VTE Famill) a Konsole, déi bal duebel sou séier sinn. Déi lescht ass xterm, wat fënnef Mol méi lues ass wéi rxvt. Wärend dem Test huet xterm och vill gerappt, sou datt den Text schwéier ze gesinn ass, och wann et déiselwecht Linn war. Konsole war séier, awer et war heiansdo komplizéiert: d'Display géif vun Zäit zu Zäit afréieren, deelweis Text ze weisen oder guer net ze weisen. Aner Terminaler weisen Strings kloer, dorënner st, Alacritty, an rxvt.

Dickey erkläert datt d'Performance Differenzen wéinst dem Design vu Scrollpuffer a verschiddene Terminaler sinn. Besonnesch beschëllegt hien rxvt an aner Terminaler "net déi allgemeng Regelen ze verfollegen":

"Am Géigesaz zu xterm huet rxvt net probéiert all Updates ze weisen. Wann et hannendrun fält, wäert et e puer Updates refuséieren fir opzehalen. Dëst hat e gréisseren Impakt op scheinbar Scrollgeschwindegkeet wéi op intern Erënnerungsorganisatioun. Een Nodeel war datt d'ASCII Animatioun e bëssen onpräzis war.

Fir dës erkannt xterm Schlässegkeet ze fixéieren, proposéiert den Dickey d'Ressource ze benotzen fastScroll, erlaabt xterm e puer Bildschirmupdates ze verwerfen fir mam Flow ze halen. Meng Tester bestätegen datt fastScroll d'Performance verbessert an xterm op Par mat rxvt bréngt. Dëst ass awer eng zimlech rau Krut, wéi den Dickey selwer erkläert: "heiansdo schéngt xterm - wéi konsole - ze stoen, wéi et op en neie Set vun Écranupdates waart nodeems e puer ewechgeholl goufen." An dësem Sënn schéngt et datt aner Terminals de beschte Kompromiss tëscht Geschwindegkeet an Displayintegritéit fonnt hunn.

Ressource Konsum

Egal ob et Sënn mécht Scrollgeschwindegkeet als Leeschtungsmetrik ze berécksiichtegen, dësen Test erlaabt eis d'Laascht op den Terminals ze simuléieren, wat et eis erlaabt aner Parameteren ze moossen wéi Erënnerung oder Diskverbrauch. D'Metrike goufen kritt andeems Dir de spezifizéierte Test leeft seq ënner Python Prozess Iwwerwachung. Hien huet Meterdaten gesammelt getrusage() fir ru_maxrss, Betrag ru_oublock и ru_inblock an en einfachen Timer.

Iwwersiicht vun Terminal Emulatoren

An dësem Test hëlt de ST éischt Plaz mat dem niddregsten Duerchschnëttsspeicherverbrauch vun 8 MB, wat net iwwerraschend ass wann Dir bedenkt datt d'Haaptidee vum Design Einfachheet ass. mlterm, xterm an rxvt verbrauchen e bësse méi - ongeféier 12 MB. En anert bemierkenswäert Resultat ass Alacritty, wat 30 MB erfuerdert fir ze lafen. Da ginn et Terminaler vun der VTE Famill mat Zuelen vun 40 bis 60 MB, wat zimlech vill ass. Dëse Konsum kann duerch d'Tatsaach erkläert ginn datt dës Terminals méi héije Bibliothéiken benotzen, zum Beispill GTK. Konsole kënnt an der leschter mat engem ganz 65MB Erënnerung Konsum während Tester, obwuel dëst duerch seng ganz breet Palette vun Fonctiounen gerechtfäerdegt ginn.

Am Verglach mat fréiere Resultater, déi virun zéng Joer kritt goufen, hunn all Programmer ugefaang däitlech méi Erënnerung ze konsuméieren. Xterm benotzt 4 MB ze erfuerderen, awer elo erfuerdert et 15 MB just beim Start. Et gëtt eng ähnlech Erhéijung vum Konsum fir rxvt, déi elo 16 MB aus der Këscht erfuerdert. Xfce Terminal hëlt 34 MB op, wat dräimol méi grouss ass wéi virdrun, awer GNOME Terminal erfuerdert nëmmen 20 MB. Natierlech goufen all virdrun Tester op 32-Bit Architektur duerchgefouert. Am LCA 2012 Rusty Russell erzielt, datt et vill méi subtile Grënn sinn, déi d'Erhéijung vum Erënnerungsverbrauch erkläre kënnen. Wann dat gesot ass, liewen mir elo an enger Zäit wou mir Gigabytes Erënnerung hunn, also wäerte mir iergendwéi geréieren.

Wéi och ëmmer, ech kann net hëllefe wéi d'Gefill datt méi Erënnerung un eppes esou fundamental wéi den Terminal ze verdeelen eng Verschwendung vu Ressourcen ass. Dës Programmer sollen déi klengst vun de Klengsten sinn, sollen op all "Këscht", och eng Schongkëscht lafen, wa mir jeemools op de Punkt kommen, wou se mat Linux Systemer ausgestatt sinn (an Dir wësst datt et esou wäert sinn ). Awer mat dësen Zuelen wäert d'Erënnerungsverbrauch an Zukunft en Thema ginn an all Ëmfeld mat verschiddene Terminaler ausser e puer vun de liichsten a limitéiertsten a Fäegkeeten. Fir dëst ze kompenséieren, hunn GNOME Terminal, Konsole, urxvt, Terminator an Xfce Terminal en Daemon Modus, deen Iech erlaabt verschidde Terminaler duerch een eenzege Prozess ze kontrolléieren, an hir Erënnerungsverbrauch limitéiert.

Iwwersiicht vun Terminal Emulatoren

Wärend meng Tester sinn ech op en anert onerwaart Resultat betreffend Disk Read-Write komm: Ech hunn erwaart iwwerhaapt näischt hei ze gesinn, awer et huet sech erausgestallt datt e puer Terminals déi voluminéisst Daten op Disk schreiwen. Also, d'VTE Bibliothéik hält tatsächlech e Scrollbuffer op der Disk (dës Feature gouf am Joer 2010 gemierkt, an dat geschitt nach ëmmer). Awer am Géigesaz zu méi alen Implementatiounen, sinn elo op d'mannst dës Donnéeë verschlësselt mat AES256 GCM (aus Versioun 0.39.2). Awer eng raisonnabel Fro stellt sech op: wat ass sou speziell un der VTE Bibliothéik datt et sou eng net-Standard Approche fir d'Ëmsetzung erfuerdert ...

Konklusioun

Am éischten Deel vum Artikel hu mir festgestallt datt VTE-baséiert Terminals e gudde Set vu Funktiounen hunn, awer elo gesi mir datt dëst mat e puer Leeschtungskäschte kënnt. Elo ass d'Erënnerung keen Thema well all VTE-Terminals kënnen duerch en Daemon-Prozess kontrolléiert ginn, wat hiren Appetit limitéiert. Wéi och ëmmer, eeler Systemer déi kierperlech Aschränkungen op d'Quantitéit vum RAM a Kernelbuffer hunn, kënnen nach ëmmer fréier Versioune vun Terminaler brauchen, well se wesentlech manner Ressourcen verbrauchen. Och wa VTE-Terminaler gutt an Duerchgang (Scrolling) Tester gemaach hunn, ass hir Displaylatenz iwwer d'Schwell, déi am GNOME User Guide festgeluecht ass. VTE Entwéckler sollten dëst wahrscheinlech berücksichtegen. Wa mir berücksichtegen datt och fir Ufänger Linux Benotzer, déi en Terminal begéinen, inévitabel ass, kënne se et méi userfrëndlech maachen. Fir erfuerene Geeks, Wiessel vum Standardterminal kann souguer manner Aenbelaaschtung bedeiten an d'Fäegkeet fir zukünfteg Aarbechtsverletzungen a Krankheeten ze vermeiden wéinst laanger Aarbechtssessiounen. Leider bréngen nëmmen déi al xterm an mlterm eis op de magesche Ping-Schwell vun 10 Millisekonnen, wat fir vill inakzeptabel ass.

Benchmark Miessunge weisen och datt duerch d'Entwécklung vu Linux grafeschen Ëmfeld d'Entwéckler eng Rei Kompromësser misse maachen. E puer Benotzer wëlle vläicht regelméisseg Fënstermanager kucken wéi se bedeitend Ping-Reduktioun ubidden. Leider war et net méiglech d'Latenz fir Wayland ze moossen: den Typometer Programm, deen ech benotzt hunn, gouf erstallt fir wat Wayland entwéckelt ass fir ze vermeiden: Spioun op aner Fënsteren. Ech hoffen datt Wayland Compositing besser funktionnéiert wéi X.org, an ech hoffen och datt an Zukunft een e Wee fënnt fir latency an dësem Ëmfeld ze moossen.

Source: will.com

Setzt e Commentaire