zsh dimulai dengan sangat lambat

63

ZSH membutuhkan waktu sekitar satu setengah detik untuk membuat jendela terminal baru agar siap. Saya cukup yakin bahwa pelakunya adalah compinit.

Saya belum dapat menemukan dokumentasi yang baik pada compinit,tetapi sepertinya itu harus caching semua hal yang diperlukan dalam beberapa file seperti .zcompdump.

Adakah trik mempercepatnya?

Eli
sumber

Jawaban:

33

oh-my-zshButuh sekitar 1,5 detik untuk memulai di laptop saya. Saya menulis beberapa langkah yang saya ambil untuk menurunkannya menjadi sekitar 0,25 detik .

Jiwa baik lainnya merangkum langkah-langkah yang diperlukan untuk mengintegrasikan perubahan saya ke dalam salinan oh-my-zsh Anda.

Masalah terbesar adalah yang compinitdisebut sejumlah waktu ekstra, bukan hanya satu kali setelah fpath sepenuhnya didefinisikan. Saya membuat perubahan itu di cabang saya oh-my-zshdi github. Perubahan telah dibahas di github dan tampaknya berfungsi dengan baik untuk beberapa orang. Semoga perubahan akan digabungkan ke oh-my-zshdalam waktu dekat.

Pat Regan
sumber
4
Untuk pembaca masa depan, saya percaya semua perubahan ini sekarang telah digabungkan ke hulu.
Michael Mior
1
Perubahan mungkin telah dipindahkan ke hulu, tetapi menghapus Git dari plugin telah membantu saya secara substansial.
kylehotchkiss
25

Sementara ZSH memiliki bagian yang adil dari pelambatan, jika Anda menemukan jendela terminal kosong selama beberapa saat sebelum Anda melihat Last Login:baris, Anda akan perlu menghapus file log Anda untuk melihat peningkatan kecepatan. Ini masih menjadi masalah pada OSX Lion dan perlu dilakukan setiap beberapa bulan. Lame, saya tahu.

Perintahnya adalah:

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

Tentu saja, Anda perlu membaca artikel ini sebelumnya sehingga Anda tahu persis apa yang sedang terjadi, karena menjalankan apa pun yang dikatakan sudo rmperlu dipikirkan. Saya hanya menempatkan ini di sini karena penggunaan ZSH membuktikan kompetensi Anda dengan baris perintah untuk memulai.

kylehotchkiss
sumber
1
Terima kasih, solusi sederhana untuk sesuatu yang sudah lama mengganggu saya!
Dean
7
Saya akan merekomendasikan tidak menggunakan -rkarena tidak ada direktori yang terlibat dan itu tidak diperlukan. Menghilangkannya menyebabkan air mata berkurang jika seseorang mengetik sudo rm -rf / private/var/log/asl*.asl(spasi sebelum pribadi) karena kesalahan.
Dean
1
Atau bahkan lebih mudah, kalau cd /private/var/log/aslbegitu rm -f *.asl. Juga sebagai catatan, jawaban ini menyelamatkan saya dari waktu startup yang mendekati 10 detik, terima kasih banyak!
Garrett Disco
1
Bekerja untukku! BTW trash /private/var/log/asl*.asl. trashperlu diinstal, tentu saja. brew install trash
Mike D
12

Peningkatan terbesar saya berasal dari menghapus item dari bagian plugin = (). Plugin 'github' dan 'brew' sangat lambat untuk dimuat.

Saya juga menghapus hub yang saya aliasing gitdan yang mempercepat prompt juga.

Saya telah menggunakan '/ usr / bin / waktu zsh -i -c keluar' untuk merekam waktu startup, namun compinittampaknya tidak membuat perbedaan yang cukup besar bagi saya.

Sangat menyenangkan mendengar apa yang dilakukan orang lain untuk mempercepatnya.

xer0x
sumber
1
Menghapus githubdan brewplugin langsung menyelesaikan masalah saya.
Peter Niederwieser
gitdan brewplugin sangat penting bagi saya. Dengan menghapus rubyplugin memecahkan masalah saya. Terima kasih.
Ivan ZG Xiao
6

Apakah Anda menggunakan pra-instal /bin/zshatau yang lain? Saya bertanya, karena zsh yang telah saya instal melalui fink mulai sangat lambat karena dimasukkannya template zsh , sedangkan vanilla mulai tepat.

Apakah menjalankan dengan dumpfile eksplisit ( compinit -d dumpfile) membuatnya berjalan lebih cepat? Halaman manual menyatakan itu

Doa berikutnya dari compinit akan membaca file yang dibuang bukannya melakukan inisialisasi penuh.

Joey1978
sumber
2
Saya menggunakan Oh My Zsh (yang saya percaya menggunakan default / bin / zsh). Ketika saya menonaktifkan memuat semua plugin Oh My Zsh dan yang lainnya, itu memuat dengan sangat cepat, tapi saya pikir dalam hal compinitini tidak pernah dipanggil. Ketika saya menelepon secara manual compinit, dibutuhkan beberapa saat. Mungkin itu hanya karena Oh My Zsh menambahkan begitu banyak ikatan untuk dikompensasi?
Eli
5

Sekarang oh-my-zsh memeriksa opsi konfigurasi git khusus oh-my-zsh.hide-status sebelum menanyakan status. Jadi lari

git config oh-my-zsh.hide-status 1

pada repositori yang bermasalah.

Artem Tikhomirov
sumber
untuk saya, saya harus menonaktifkan plugin git di .zshrc. Saat ini saya menghadapi masalah dengan respons internet lambat, yang membuat zsh lambat
Paschalis
5

Zsh sendiri dimulai pada sekitar 0,1 detik untuk saya, yang cukup bagus. Saya baru saja memperhatikan ketika saya mendekati tanda 50.000 perintah sejarah bahwa itu menjadi lebih seperti 3 detik untuk memuat prompt pertama.

Saya tidak tahu bagaimana kalian menemukan semua alasan lain untuk startup yang lambat ini, tetapi milik saya persis seperti dugaan pertama saya. Saya melakukan mv ~/.zsh_history zsh_history_backupdan bam, startup 3 detik sekarang adalah startup 0,1 detik. Anehnya, /usr/bin/time /bin/zsh -i -c exitgagal menangkap waktu yang diperlukan untuk memuat dalam sejarah.

Jika Anda tidak memiliki puluhan ribu perintah dalam riwayat zsh Anda, maka ini bukan. ~/.zsh_history1.8MB saya diukur. Sangat mungkin untuk secara tidak sengaja menempelkan sejumlah besar barang sebagai perintah ke terminal, ini juga akan menggembungkan sejarah dengan cepat (walaupun ini adalah sesuatu yang sangat harus dihindari karena jelas dapat sangat merusak).

Steven Lu
sumber
Ini jawabannya. Jika belum melakukan sesuatu yang mewah (banyak plugin dan add-on) dengan oh-my-zsh, maka saya jamin itu karena log riwayat. Perubahannya langsung.
Sebastialonso
2

Saya menggunakan tema "af-magic"

Beralih ke "muse" menyelesaikan masalah.

Edit ~ / .zshrc dan ubah baris itu:

#ZSH_THEME="random"
#ZSH_THEME="af-magic"
ZSH_THEME="muse"
mika
sumber
terima kasih atas jawabannya, saya menemukan perubahan dari af-magic menjadi sesuatu yang telah diselesaikan untuk masalah ini. Menariknya mengembalikan af-magic masih bekerja dengan baik. tidak yakin apa yang terjadi di bawah tenda.
sarat
0

Saya memiliki peningkatan kecepatan yang luar biasa setelah menghapus direktori ~ / .oh-my-zsh / plugins /. Ada banyak plugin yang tidak digunakan di dalamnya.

pinguinjkeke
sumber
0

Tambahkan berikut ini ke ~ / .zshenv Anda

skip_global_compinit=1
Telapak tangan
sumber