zsh अविश्वसनीय रूप से धीरे-धीरे शुरू होता है


63

ZSH को तैयार होने के लिए एक नई टर्मिनल विंडो बनाने में लगभग ढाई सेकंड लगते हैं। मुझे पूरा यकीन है कि अपराधी है compinit

मुझे अच्छे दस्तावेज़ नहीं मिल पाए हैं, compinit,लेकिन ऐसा लग रहा है कि इसे किसी फ़ाइल में सभी आवश्यक चीजों को कैशिंग करना चाहिए .zcompdump

इसे गति देने पर कोई चाल?

जवाबों:


33

oh-my-zshमेरे लैपटॉप पर स्टार्ट होने में लगभग 1.5 सेकंड का समय लग रहा था। मैंने लगभग 0.25 सेकंड के लिए नीचे उतरने के लिए कुछ कदम उठाए

एक अन्य दयालु आत्मा ने ओह-माय-ज़श की अपनी प्रति में मेरे परिवर्तनों को एकीकृत करने के लिए आवश्यक कदमों को संक्षेप में प्रस्तुत किया

सबसे बड़ी समस्या यह है कि compinitएफपीए पूरी तरह से परिभाषित होने के बाद सिर्फ एक समय के बजाय अतिरिक्त समय का एक पूरा गुच्छा कहा जा रहा था। मैंने oh-my-zshगितुब पर अपनी शाखा में उन बदलावों को किया । परिवर्तन की चर्चा जीथब पर की गई है और वे कुछ लोगों के लिए अच्छा काम कर रहे हैं। उम्मीद है कि परिवर्तन oh-my-zshनिकट भविष्य में विलय कर दिया जाएगा।


4
भविष्य के पाठकों के लिए, मेरा मानना ​​है कि इन सभी परिवर्तनों को अब ऊपर की ओर मिला दिया गया है।
माइकल मेयोर

1
परिवर्तनों को ऊपर की ओर ले जाया जा सकता है, लेकिन प्लग इन से गिट को हटाने से मुझे काफी मदद मिली है।
kylehotchkiss

25

जबकि ZSH में मंदी का अपना उचित हिस्सा है, अगर आपको Last Login:लाइन देखने से पहले कुछ क्षणों के लिए टर्मिनल विंडो खाली मिलती है, तो आपको गति सुधार देखने के लिए अपनी लॉग फ़ाइलों को साफ़ करने की आवश्यकता है। यह अभी भी OSX शेर के रूप में एक मुद्दा है और इसे हर कई महीनों में करने की आवश्यकता होगी। लंगड़ा, मुझे पता है।

आदेश है:

sudo rm -rf /private/var/log/asl/*.asl

बेशक, आपको पहले से इस लेख को पढ़ने की आवश्यकता है और इसलिए आप जानते हैं कि वास्तव में क्या चल रहा है, क्योंकि कुछ भी जो कहता sudo rmहै उसके बारे में सोचने की आवश्यकता है। मैंने केवल इसे यहां रखा है क्योंकि ZSH का उपयोग शुरू करने के लिए कमांड लाइन के साथ आपकी क्षमता साबित करता है।


1
धन्यवाद, कुछ के लिए इतना आसान समाधान जो मुझे इतने लंबे समय से परेशान कर रहा है!
डीन

7
मैं सलाह देता हूं कि -rकोई निर्देशिका शामिल नहीं है और इसकी आवश्यकता नहीं है। यदि किसी व्यक्ति sudo rm -rf / private/var/log/asl*.aslने गलती से (निजी से पहले स्थान) टाइप किया है, तो इसे कम आँसू की ओर जाता है ।
डीन

1
या इससे भी अधिक मूर्खतापूर्ण, cd /private/var/log/aslतो rm -f *.asl। रिकॉर्ड के लिए भी, इस जवाब ने मुझे एक स्टार्टअप समय से बचा लिया, जो 10 सेकंड तक पहुंच रहा था, बहुत बहुत धन्यवाद!
गैरेट डिस्को

1
मेरे लिए काम किया! BTW trash /private/var/log/asl*.asltrashस्थापित करने की आवश्यकता होगी, निश्चित रूप से। brew install trash
माइक डी

12

मेरा सबसे बड़ा सुधार प्लगइन = () अनुभाग से आइटम हटाने से आया है। 'गिटब' और 'काढ़ा' प्लगइन्स लोड करने के लिए बहुत धीमी हैं।

मैंने उस हब को भी हटा दिया था, जिसे मैंने अलियास किया था gitऔर जो शीघ्र ही ठीक हो गया था।

मैं स्टार्टअप समय को रिकॉर्ड करने के लिए '/ usr / bin / time zsh -i -c एक्जिट' का उपयोग कर रहा हूं, हालांकि compinitयह मेरे लिए एक बड़ा अंतर बनाने के लिए प्रकट नहीं होता है।

यह सुनना बहुत अच्छा होगा कि अन्य लोग इसे गति देने के लिए क्या कर रहे हैं।


1
githubऔर brewप्लगइन्स को हटाने से मेरी समस्या तुरंत हल हो गई।
पीटर निडरविसर 3

gitऔर brewप्लगइन्स मेरे लिए बहुत आवश्यक हैं। rubyप्लगइन को हटाने से मेरी समस्या हल हो गई। धन्यवाद।
इवान जेडजी जिओ

6

क्या आप पूर्व-स्थापित /bin/zshया किसी अन्य का उपयोग कर रहे हैं ? मैं पूछता हूं, क्योंकि झुर्रियों के माध्यम से मैंने जो चिड़ियाघर स्थापित किया है, वह बहुत ही धीमी गति से शुरू होता है, क्योंकि इसमें ज़ीश टेम्पलेट शामिल नहीं है , जबकि वेनिला सही शुरू होता है।

एक स्पष्ट डंपफाइल ( compinit -d dumpfile) के साथ चलने से क्या यह तेज होता है? वह आदमी पेज बताता है कि

कम्पिनिट का अगला आह्वान पूर्ण आरंभ करने के बजाय डंप की गई फ़ाइल को पढ़ेगा।


2
मैं ओह माई ज़ीश का उपयोग कर रहा हूं (जो मुझे लगता है कि डिफ़ॉल्ट / बिन / ज़श का उपयोग करता है)। जब मैं ओह माई ज़ेड के प्लगइन्स और व्हाट्सएप के सभी लोड करने को अक्षम करता हूं, तो यह वास्तव में जल्दी से लोड होता है, लेकिन मुझे लगता है कि इस मामले compinitमें कभी नहीं कहा जाता है। जब मैं मैन्युअल रूप से कॉल compinitकरता हूं तो थोड़ा समय लगता है। शायद यह सिर्फ इसलिए है क्योंकि ओह माई ज़ीश ने संकलन करने के लिए इतने सारे बाइंडिंग जोड़े हैं?
एली

5

अब ओह-माय-ज़श, स्टेटस क्वेरी करने से पहले विशेष git कॉन्फ़िगरेशन विकल्प ओह-माय-zsh.hide-status की जाँच करता है। तो दौड़ो

git config ओह-माय-zsh.hide-status 1

समस्याग्रस्त भंडार पर।


मेरे लिए मुझे git plugin को निष्क्रिय करना था .zshrc। मैं वर्तमान में धीमी गति से इंटरनेट प्रतिक्रिया के साथ मुद्दों है, जो धीमी गति से zsh बनाया का सामना करना पड़ रहा
Paschalis

5

अपने आप पर Zsh मेरे लिए लगभग 0.1 सेकंड में शुरू होता है, जो काफी अच्छा है। जैसा कि मैंने 50,000 कमांड इतिहास के निशान के पास पाया है कि मैंने पहले संकेत को लोड करने के लिए 3 सेकंड की तरह अधिक हो गया।

मुझे पता है कि आप लोग धीमे स्टार्टअप के लिए इन सभी अन्य कारणों का पता लगा रहे हैं, लेकिन मेरा वास्तव में मेरा पहला अनुमान क्या था। मैंने a mv ~/.zsh_history zsh_history_backupऔर bam किया, 3 सेकंड का स्टार्टअप अब 0.1 सेकंड का स्टार्टअप है। उत्सुकता से, /usr/bin/time /bin/zsh -i -c exitइतिहास में लोड होने में लगने वाले समय को पकड़ने में विफल रहता है।

यदि आपके पास अपने zsh इतिहास में हज़ारों आदेश नहीं हैं, हालाँकि, तो यह नहीं है। मेरी ~/.zsh_historyमाप 1.8MB है। एक टर्मिनल में एक कमांड के रूप में गलती से सामान का एक बड़ा हिस्सा चिपकाने के लिए इसका बहुत संभव है, यह इतिहास को सही जल्दी से फूला देगा (हालांकि यह करने से बचने के लिए बहुत कुछ है क्योंकि यह स्पष्ट रूप से बेहद विनाशकारी हो सकता है)।


यह उत्तर है। अगर ओह-माय-ज़श के साथ कुछ भी फैंसी (बहुत सारे प्लगइन्स और ऐडऑन) नहीं किया है, तो मैं गारंटी देता हूं कि यह इतिहास लॉग के कारण है। बदलाव तत्काल है।
सेबेस्टियलोनो

2

मैं "af-Magic" विषय का उपयोग कर रहा था

"म्यूज़" पर स्विच करने से समस्या हल हो गई।

~ / .Zshrc संपादित करें और उस पंक्ति को संशोधित करें:

#ZSH_THEME="random"
#ZSH_THEME="af-magic"
ZSH_THEME="muse"

उत्तर के लिए धन्यवाद, मैंने पाया कि अफ-मैजिक से बदलकर कुछ और समस्या के लिए हल हो गया है। दिलचस्प है कि पीछे के जादू को बहाल करना अभी भी बहुत अच्छा है। हुड के नीचे चला गया क्या यकीन नहीं है।
शरत

0

मैं ~ / .oh-my-zsh / plugins / निर्देशिका को साफ़ करने के बाद वास्तव में महान गति में सुधार हुआ है। इसके अंदर कई अप्रयुक्त प्लगइन्स थे।


0

निम्नलिखित को अपने ~ / .zshenv में जोड़ें

skip_global_compinit=1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.