zsh inanılmaz derecede yavaş başlıyor


63

ZSH yeni bir terminal penceresi oluşturmaya hazır olmaktan bir buçuk saniye kadar sürüyor. Suçlu olduğuna eminim compinit.

Hakkında iyi belgeler bulamadım compinit,ancak gerekli tüm dosyaları bir dosyada önbelleğe alması gerekiyor gibi görünüyor .zcompdump.

Hızlandırmanın püf noktaları var mı?

Yanıtlar:


33

oh-my-zshdizüstü bilgisayarımda başlatmak için yaklaşık 1.5 saniye alıyordu. Bunu yaklaşık 0.25 saniyeye indirmek için attığım adımlardan bazılarını yazdım .

Başka bir tür ruh , değişikliklerimi oh-my-zsh kopyanıza entegre etmek için gereken adımları özetledi .

En büyük sorun, compinitfpath'ın tam olarak tanımlanmasından sonra sadece bir kez değil, bir sürü zaman olarak fazladan zaman olarak adlandırılmasıydı. Bu değişiklikleri oh-my-zshşubemde github'da yaptım . Değişiklikler github'da tartışıldı ve birkaç kişi için iyi çalışıyor gibi görünüyor. Umarım değişiklikler oh-my-zshyakın bir gelecekte bir araya gelecektir.


4
Gelecekteki okuyucular için, tüm bu değişikliklerin şimdi akış yönünde birleştirildiğine inanıyorum.
Michael Mior

1
Değişiklikler yukarı yönde taşınmış olabilir, ancak Git'i eklentilerden kaldırmak büyük ölçüde bana yardımcı oldu.
kylehotchkiss

25

ZSH'nin yavaş yavaş piyasa payına sahip olmasına rağmen, Last Login:hattı görmeden önce birkaç dakika için terminal penceresini boş bulursanız, hız iyileştirmelerini görmek için günlük dosyalarınızı temizlemeniz gerekir. Bu hala OSX Lion ile ilgili bir sorundur ve birkaç ayda bir yapılması gerekecek. Lame, biliyorum.

Komut:

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

Tabii ki, sen gerek önceden bu yazıyı okumak ve böylece bir şey çalıştıran diyor çünkü oluyor tam olarak bilmek sudo rmdüşündüm edilecek ihtiyaçlar. Bunu sadece buraya koydum, çünkü ZSH kullanımınız, başlatılacak komut satırıyla olan yetkinliğinizi kanıtlıyor.


1
Teşekkürler, çok uzun zamandır beni rahatsız eden bir şey için bu kadar basit bir çözüm!
Dean,

7
-rDizin olmadığından ve gerekmediğinden kullanmamanı tavsiye ederim . Atlamak, birisinin sudo rm -rf / private/var/log/asl*.asl(özelden önce boşluk bırakarak) yazması halinde daha az gözyaşı oluşmasına neden olur .
Dean,

1
Ya da daha kusursuz, cd /private/var/log/aslo zaman rm -f *.asl. Ayrıca kayıt için bu cevap beni 10 saniyeye yaklaşan bir başlangıç ​​zamanından kurtardı, çok teşekkürler!
Garrett Disco

1
Benim için çalıştı! Btw trash /private/var/log/asl*.asl. trashtabii ki kurulması gerekecek. brew install trash
Mike D

12

En büyük geliştirmem, eklentiyi kaldırmak (=) bölümündeki öğeleri kaldırmaktan geldi. 'Github' ve 'Demlemek' eklentileri yüklemek için çok yavaş.

Ayrıca , takma yaptığım hub'ı da kaldırdım gitve bu da istemi hızlandırdı.

Başlangıç ​​zamanlarını kaydetmek için '/ usr / bin / time zsh -i -c exit' kullanıyorum, ancak compinitbenim için yeterince büyük bir fark yaratmıyor.

Hızlandırmak için başkalarının ne yaptığını duymak harika olurdu.


1
githubVe breweklentileri kaldırmak derhal sorunumu çözdü.
Peter Niederwieser,

gitve breweklentiler benim için oldukça önemlidir. rubyEklentiyi kaldırarak sorunumu çözdüm. Teşekkürler.
Ivan ZG Xiao

6

Önceden yüklenmiş /bin/zshveya başka bir tane mi kullanıyorsunuz? Soruyorum, çünkü fink aracılığıyla kurduğum zsh , zsh şablonlarının eklenmesi nedeniyle oldukça yavaş başlıyor, vanilya ise hemen başlıyor.

Açık bir dumpfile ( compinit -d dumpfile) ile çalıştırmak daha hızlı çalışmasını sağlar mı? Man sayfa bu belirtir

Bir sonraki compinit çağrısı, tam bir başlatma yapmak yerine atılan dosyayı okuyacak.


2
Oh My Zsh kullanıyorum (varsayılan / bin / zsh kullandığına inanıyorum). Oh My Zsh'in tüm eklentilerini yüklemeyi devre dışı bıraktığımda ve compinithiçbir şey yapmadığında , çok hızlı bir şekilde yükleniyor, ancak bu durumda asla çağrılmadığını düşünüyorum . Elle aradığımda compinitbiraz zaman alıyor. Belki de sadece, Oh My Zsh’in zorlamak için çok fazla bağ eklemesi nedeniyle mi?
Eli

5

Şimdi oh-my-zsh, durumu sorgulamadan önce oh-my-zsh.hide-durumunu özel git yapılandırma seçeneğini kontrol eder. Koş o zaman

git yapılandırma oh-my-zsh.hide-durumu 1

sorunlu depo üzerinde.


benim için git eklentisini devre dışı bırakmak zorunda kaldım .zshrc. Şu anda yavaş yavaş İnternet cevabı ile ilgili sorunlar yaşıyorum, zsh'yi yavaşlattı
Paschalis

5

Zsh kendi başına yaklaşık 0.1 saniyede başlıyor, bu da yeterince iyi. 50.000 komuta geçmişi işaretine yaklaştığımda ilk istemi yüklemenin 3 saniye sürdüğünü farkettim.

Yavaş başlangıç ​​için diğer tüm nedenleri nasıl bulduğunuzu bilmiyorum, ama benimki de benim ilk tahminimdi. Ben yaptım mv ~/.zsh_history zsh_history_backupve bam 3 saniye başlangıç şimdi 0,1 saniye açılışta olduğunu. İlginç bir şekilde, /usr/bin/time /bin/zsh -i -c exittarihte yüklenmesi gereken süreyi yakalayamıyor.

Eğer zsh tarihinizde on binlerce emir yoksa, bu o değil. Benim ~/.zsh_historyölçülen 1.8MB. Yanlışlıkla büyük miktarda bir parçayı bir terminale komut olarak yapıştırmak çok olasıdır, bu da geçmişi hızlı bir şekilde şişirir (bu, kesinlikle son derece yıkıcı olabileceğinden kaçınmak için çok fazla bir şeydir).


Cevap bu. Oh-my-zsh ile süslü (çok sayıda eklenti ve eklenti) bir şey yapmadıysanız, bunun nedeni tarih günlüğü nedeniyle garanti ediyorum. Değişim hemen gerçekleşir.
Sebastialonso

2

"Af-magic" temasını kullanıyordum

"Muse" a geçmek sorunu çözdü.

~ / .Zshrc dosyasını düzenleyin ve bu satırı değiştirin:

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

Cevabınız için teşekkürler, af-sihrinden problemi çözen başka bir şeye geçtim. İlginç bir şekilde af sihrini geri getirmek hala harika çalışıyor. kaputun altında neler olup bittiğinden emin değilim.
sarat,

0

~ / .Oh-my-zsh / plugins / dizinini temizledikten sonra gerçekten çok iyi hız iyileştirmelerim var. İçinde pek çok kullanılmayan eklenti vardı.


0

Aşağıdakileri ~ / .zshenv dosyasına ekleyin

skip_global_compinit=1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.