क्या एक टर्मिनल एमुलेटर टीटीवाई 1-6 जितना तेज हो सकता है?


59

मैं हाल ही में विभिन्न gnome- टर्मिनल, aterm, xterm, wterm, से rxvt करने के लिए, विभिन्न टर्मिनल एमुलेटर की कोशिश कर रहा हूँ। मैं जो परीक्षण कर रहा हूं वह इस क्रम में है:

  1. 2 पैन के साथ एक tmux विंडो खोलें
  2. बायां फलक क्रिया-प्रधान कार्य होगा जैसे कि grep a /et/c -rया सरलtime seq -f 'blah blah %g' 100000
  3. दायाँ फलक सिंटैक्स ऑन के साथ एक vim विंडो होगी, जिसमें ऐसी कोई भी फ़ाइल होगी जिसमें> 100 से अधिक कोड हों।

जब बायाँ फलक बहुत सारे आउटपुट को प्रिंट कर रहा होता है, तो दायाँ फलक बहुत धीमा और अनुत्तरदायी प्रतीत होता है, मैंने विम में स्क्रॉल करने की कोशिश की लेकिन इसे बदलने में 1-2 सेकंड का समय लगता है। जब मैं CtrlCबाएं फलक पर प्रेस करने की कोशिश करता हूं तो यह रुकने से पहले 10 सेकंड से अधिक समय तक इंतजार करता है

जब मैं TTY (दबाने CTRL+ ALT+ ( F[1-6])) में एक ही काम करता हूं , तो ऐसा नहीं होता है और दोनों पैन बहुत उत्तरदायी होते हैं।

मैंने कुछ कॉन्फिग्रेशन जैसे कि एंटीलिया फोंट, कलरिंग की बारी, डिफॉल्ट सेटिंग्स का उपयोग और xmonad और openbox में परिवर्तन किया है, लेकिन यह कुछ भी नहीं बदलता है।

time seq -f 'blah blah %g' 100000इन टर्मिनलों के बीच परिणाम वास्तव में अलग नहीं है, लेकिन जवाबदेही वास्तव में अलग है जब मैं स्पान्ड पेन टक्स (या अन्य मल्टीप्लेक्सर्स) चला रहा हूं। FYI करें, मैं उन सभी को एक अधिकतम मोड में चला रहा हूं।

मैंने फ्रेम बफ़र्ड टर्मिनलों के बारे में पढ़ा है, लेकिन यह निश्चित नहीं है कि यह कैसे काम करता है और इसका उपयोग मेरे टर्मिनल एमुलेटर को गति देने के लिए कैसे किया जा सकता है।

तो मेरा सवाल है, क्या टर्मिनल एमुलेटर टीटीवाई की तुलना में बहुत धीमा है? क्या टीटीवाई के रूप में इसे तेजी से बनाने की कोई संभावना है? शायद हार्डवेयर त्वरण या कुछ और? एक बात मुझे पता है, अधिकतम सर्वर एमुलेटर चलाने पर एक्स सर्वर में मेरा रिज़ॉल्यूशन 1920x1080 है, और जब मैं टीटीवाई चला रहा हूं तो यह उससे कम है, लेकिन मुझे यकीन नहीं है कि यह प्रदर्शन को कैसे प्रभावित करेगा।


ऐसा लगता है कि कहीं एक बड़ा बफर है
थोरबजोर्न रावन एंडरसन

2
नोटिस ट्टी [1-6] हमेशा नैटली फास्ट नहीं होते हैं । मशीनों में से एक का उपयोग कर रहा हूँ, एक बहुत ही धीमी गति से प्रदर्शन करता है, जबकि पाठ बहुत धीमी गति से सांत्वना देता है।
把 留 在 无 '

जवाबों:


75

जब GUI टर्मिनल एमुलेटर एक स्ट्रिंग प्रिंट करता है, तो उसे स्ट्रिंग को फॉन्ट कोडपॉइंट्स में बदलना होता है, कोडपॉइंट्स को फॉन्ट रेंडरर को भेजना होता है, एक बिटमैप वापस मिलता है और उस बिटमैप को X सर्वर के माध्यम से डिस्प्ले में ब्लिट करता है।

फ़ॉन्ट रेंडरर को ग्लिफ़ को पुनः प्राप्त करना होगा और उन्हें चलाना होगा (क्या आप जानते हैं कि Truetype / Opentype फोंट एक प्रोग्राम हैं जो फॉन्ट रेंडरर में वर्चुअल मशीन के अंदर चल रहे हैं ?)। प्रत्येक ग्लिफ़ को चलाने की प्रक्रिया के दौरान, फॉन्ट मेट्रिक्स, कर्निंग (हालांकि मोनोस्पेस फॉरेक्स और कर्निंग अच्छी तरह से मिक्स नहीं होते हैं), यूनिकोड अनुपालन के संबंध में, निर्णय की एक पागल संख्या होती है, और इससे पहले कि हम उप-उपयोग करने वाले रास्टराइज़र तक पहुँचते हैं। -पिक्सल संबोधन। तब टर्मिनल को फॉन्ट रैस्टराइज़र द्वारा उत्पादित बफर को लेना पड़ता है और इसे सही जगह पर ब्लिट करना होता है, पिक्सेल प्रारूप रूपांतरण, अल्फा चैनल (सब-पिक्सेल एड्रेसिंग के लिए), स्क्रॉलिंग (जिसमें अधिक ब्लिटिंग शामिल होती है ), वगैरह का ख्याल रखना ।

इसकी तुलना में, (ध्यान दें: पाठ मोड में एक आभासी टर्मिनल चल के लिए एक स्ट्रिंग लिख नहीं एक ग्राफिकल कंसोल) वीडियो स्मृति करने के लिए कि स्ट्रिंग लेखन शामिल है। 'नमस्ते दुनिया!' 13 बाइट्स लिखना (13 16-बिट शब्द यदि आप रंग भी चाहते हैं)। X फॉन्ट रैस्टराइज़र ने अभी तक अपनी स्ट्रेचिंग एक्सरसाइज़ और अंगुली फड़कना शुरू नहीं किया है और हम कर चुके हैं। यही कारण है कि पाठ विधा दशकों के अतीत में इतनी अविश्वसनीय रूप से महत्वपूर्ण थी। इसे लागू करना बहुत तेज है। यहां तक ​​कि आपको लगता है कि स्क्रॉल करना आसान है: आदरणीय मोटोरोला 6845-आधारित एमडीए और सीजीए पर भी, आप एक रजिस्टर में एकल 8-बिट मान लिखकर स्क्रीन को स्क्रॉल कर सकते हैं (16 हो सकता है ... यह बहुत लंबा हो गया है)। स्क्रीन रिफ्रेश सर्किटरीबाकी किया। आप फ्रेम बफर के प्रारंभ पते को अनिवार्य रूप से बदल रहे थे।

ऐसा कुछ भी नहीं है जिसे आप एक ही कंप्यूटर पर एक पाठ मोड टर्मिनल के रूप में एक चित्रमय टर्मिनल बनाने के लिए कर सकते हैं । लेकिन दिल लीजिए: धीमे ग्राफिकल टर्मिनल की तुलना में धीमे टेक्स्ट मोड वाले कंप्यूटर हैं जिन्हें आपने कभी आधुनिक कंप्यूटर पर देखा होगा। मूल आईबीएम पीसी बहुत खराब था (डॉस ने सॉफ्टवेयर स्क्रॉलिंग, आह) किया। जब मैंने अपना पहला मिनिक्स कंसोल 80286 पर देखा, तो मैं (कूद) स्क्रॉल की गति से चकित था। प्रगति अच्छी है।

अपडेट: टर्मिनल को कैसे तेज करें

@ poige ने पहले ही अपने उत्तर में तीन का उल्लेख किया है , लेकिन यहां मेरा खुद का उन पर लेना है:

  • टर्मिनल का आकार घटाएं। मेरे अपने टर्मिनल स्क्रीन बढ़ने तक बढ़ते हैं, और वे धीमी गति से बढ़ते हैं जैसा कि वे करते हैं। मैं चित्रमय टर्मिनलों पर अतिरंजित, नाराज हो जाता हूं, फिर मैं उनका और सब कुछ बेहतर करता हूं। :)
  • (@poige) एक अलग टर्मिनल एमुलेटर का उपयोग करें। आप कुछ आधुनिक सुविधाओं की कीमत पर एक बड़ी गति को बढ़ा सकते हैं। xtermऔर rxvtवास्तव में अच्छी तरह से काम करते हैं, इसमें एक शानदार टर्मिनल एमुलेटर है। मुझे संदेह है कि आपके परीक्षण से पता चलता है कि वे 'आधुनिक' की तुलना में बेहतर प्रदर्शन कर सकते हैं।
  • (@poige) स्केलेबल फोंट का उपयोग न करें। 1986 कॉल और इसके टर्मिनलों के लिए पूछ सकते हैं, लेकिन आप इनकार नहीं कर सकते वे तेजी से कर रहे हैं। ;)
  • (@poige) एंटी-अलियासिंग / सब-पिक्सेल एड्रेसिंग और हिंटिंग को बंद करके फ़ॉन्ट रैस्टरज़र को डंबल करें । उनमें से अधिकांश पर्यावरण चर में ओवरराइड की अनुमति देते हैं, इसलिए आपको विश्व स्तर पर ऐसा करने की आवश्यकता नहीं है। नोट: यदि आप एक बिटमैप फ़ॉन्ट चुनते हैं तो व्यर्थ है।
  • यह सबसे अधिक चोट पहुंचाएगा: (कई पैन में) का उपयोग न करेंtmux - दो अलग-अलग टर्मिनलों को एक साथ चलाएं। जब tmuxदो पैन प्रदर्शित करते हैं, तो इसे कर्सर को बहुत दूर ले जाने के लिए टर्मिनल निर्देशों का उपयोग करना पड़ता है। भले ही आधुनिक टर्मिनल पुस्तकालय अनुकूलन में बहुत तेज़ और अच्छे हैं, फिर भी वे आपके कच्चे टर्मिनल बैंडविड्थ से बाइट चुरा रहे हैं। डीईसी वीटी-संगत टर्मिनल पर कर्सर को एक मनमानी पंक्ति में ले जाने के लिए, आप भेजें ESC [ row ; col H। वह 6-10 बाइट्स है। कई टर्मिनलों के साथ, आप कार्य को अलग कर रहे हैं, स्थिति, अनुकूलन, बफरिंग और अन्य सभी सामानों की cursesआवश्यकता को पूरा कर रहे हैं, और कई सीपीयू कोर का बेहतर उपयोग कर रहे हैं।

5
+1, लेकिन कुछ अतिरिक्त एस्केप कोड भेजे जाने की तुलना में tmux चीज़ और भी जटिल है। टर्मिनल पूरी विंडो को स्क्रॉल करने के लिए हैं, इसका आधा हिस्सा नहीं। इसलिए जब tmux को एक पंक्ति में सभी पाठ को बाएँ फलक में ले जाना होता है, तो यह केवल एक नई पंक्ति नहीं बना सकता है और टर्मिनल को इसे ऊपर ले जाने देता है, इसे पूरे फलक को फिर से बनाना पड़ता है।
पैट्रिक

1
बिलकुल सही! मैं उसके बारे में भूल गया। हालांकि वहां है टर्मिनलों कि स्क्रीन के भाग स्क्रॉल सकता है किया गया (यह IIRC बुलाया गया था 'की रक्षा' स्क्रीन के भाग - यह रूपों आदि के लिए इस्तेमाल किया गया था), यह कभी नहीं विशेष रूप से लचीला था, और शायद आधुनिक टर्मिनल emulators द्वारा समर्थित नहीं है। हालांकि आप कुछ वास्तव में विचित्र अप्रचलित निर्देशों को आज भी लागू करते हैं।
एलेक्सिओस

3 वर्षों के बाद इसका उत्तर देना लेकिन आशा है कि कोई इसे उपयोगी पाता है। मैं अंतराल को केवल तभी नोटिस करता हूं जब मैं अपने vim (हां, यहां तक ​​कि NERDTree) में ऊर्ध्वाधर विभाजन करता हूं, लेकिन सामान्य विभाजन स्क्रॉलिंग के दौरान बिल्कुल भी जारी नहीं होता है।
shriek

17

इस बीच - Alexios ने सभी कारणों का अच्छी तरह से वर्णन किया है, मैं कई बातों का उल्लेख कर सकता हूं, जो दर्द से राहत दिलाते हैं:

  • बिटमैप फ़ॉन्ट का उपयोग करें ( Terminal, Terminus- यह वास्तव में बहुत अच्छा है),
  • एंटी-अलियासिंग बंद करें, या कम से कम उप-पिक्सेल रेंडरिंग का उपयोग न करने पर विचार करें ,
  • केडीई के टर्मिनल का उपयोग करें - konsole

1
इसके अलावा, और यह दर्दनाक है, टर्मिनल के आकार को कम करें (ओपी एक 1920x1200px विंडो का उपयोग कर रहा है)। मुझे बड़े टर्मिनलों से प्यार है , और मेरा तब तक विकास होता है जब तक कि वे लगभग स्क्रीन के रूप में बड़े नहीं हो जाते हैं, लेकिन टर्मिनल बढ़ते ही टर्मिनल की गति बढ़ जाती है। यहां तक ​​कि konsole(जो मैं एहसान करता हूं)।
अलेक्सियो

3
konsoleआलसी स्क्रीन अपडेट करता है: तुरंत आउटपुट प्रदर्शित करने के बजाय, यह अधिक आउटपुट के लिए थोड़ा समय इंतजार करता है, इसलिए "बैच" अपडेट के रूप में। यही कारण है कि यह ओपी के तनाव परीक्षण के साथ पूरी तरह से उत्तरदायी होने के बिंदु पर इतना अच्छा प्रदर्शन करता है।
नवजाल

2
बहुत निश्चित रूप से फ़ॉन्ट रेंडरिंग को किसी बिंदु पर कैश किया जाता है। मुझे नहीं लगता कि हर बार इसे एक पिक्समैप में कॉपी किए जाने वाले वेक्टर की परिभाषा से अक्षर f का प्रतिनिधित्व करने वाले पिक्सेल पुनः प्राप्त होते हैं। (जब तक कि इसे नए आकार, या नए कोण पर प्रदान नहीं किया जाता)। मैं इस तथ्य पर विवाद नहीं करूंगा कि कुछ बहुत अच्छे बिटमैप फोंट हैं, जो कि केवल उपस्थिति के लिए सबसे अच्छा विकल्प हो सकते हैं, यदि वे आपके इच्छित आकार के लिए मौजूद हैं।
पीटर कॉर्ड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.