web-dev-qa-db-ja.com

zshの起動が非常に遅い

ZSHは、新しいターミナルウィンドウの作成から準備が整うまで約1秒半かかります。犯人はcompinitだと思います。

compinit,に関する適切なドキュメントを見つけることができませんでしたが、.zcompdumpなどのファイルに必要なものをすべてキャッシュしているようです。

スピードアップのコツは?

65
Eli

oh-my-zshは私のラップトップで起動するのに約1.5秒かかっていました。 約0.25秒に短縮するために実行した手順の一部を書きました

別の親切な魂 私の変更をあなたのコピーに統合するために必要なステップの要約 of oh-my-zsh。

最大の問題は、compinitが、fpathが完全に定義された後に1回だけではなく、大量の余分な時間と呼ばれていたことです。これらの変更は、githubのoh-my-zshのブランチで行いました。変更はgithubで議論されており、一部の人にとってはうまく機能しているようです。近い将来、変更がoh-my-zshにマージされることを願っています。

33
Pat Regan

ZSHはそれ自体がスローダウンの公平なシェアを持っていますが、Last Login:行が表示される前にターミナルウィンドウがしばらく空白になる場合、速度の向上を確認するにはログファイルをクリアする必要があります。これはOSX Lionの時点ではまだ問題であり、数か月ごとに実行する必要があります。ラメ、知ってる。

コマンドは次のとおりです。

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

もちろん youneedfor this article before preread なので、何が起こっているかを正確に知ることができます。 Sudo rmについて考える必要があります。 ZSHを使用することで、開始するコマンドラインの能力が証明されるので、ここではこれだけを示します。

25
kylehotchkiss

私の最大の改善は、plugin =()セクションから項目を削除したことです。 「github」および「brew」プラグインのロードは非常に遅いです。

また、to-gitにエイリアスを設定した hub を削除し、プロンプトも高速化しました。

起動時間を記録するために「/ usr/bin/time zsh -i -c exit」を使用してきましたが、compinitを使用しても十分な違いはないようです。

それをスピードアップするために他の人が何をしているのかを聞くのは素晴らしいことです。

12
xer0x

プレインストールされた/bin/zshまたは別のものを使用していますか?私がfinkを介してインストールしたzshは zshテンプレート が含まれているために起動が非常に遅くなるので、バニラはすぐに起動するので、私は尋ねます。

明示的なダンプファイル(compinit -d dumpfile)で実行すると、処理が速くなりますか?マニュアルページには、

次のcompinitの呼び出しでは、完全な初期化を実行する代わりに、ダンプされたファイルを読み取ります。

7
Joey1978

Zshはそれ自体で約0.1秒で起動しますが、これで十分です。 50,000個のコマンド履歴マークに近づくと、最初のプロンプトをロードするのに3秒ほどかかることに気づきました。

起動が遅い他の理由を皆さんがどのように見つけているのかはわかりませんが、私のものはまさに私の最初の推測でした。 mv ~/.zsh_history zsh_history_backupとbam、3秒の起動が0.1秒の起動になりました。不思議なことに、/usr/bin/time /bin/zsh -i -c exitは、履歴の読み込みにかかる時間をキャプチャできません。

ただし、zshの履歴に数万のコマンドがない場合は、そうではありません。ぼくの ~/.zsh_history 1.8MBの測定値。誤って大量のデータをコマンドとしてターミナルに貼り付ける可能性があります。これは、履歴をすぐに膨らませます(これは、明らかに非常に破壊的である可能性があるため、実行するのを避けるために非常に多くのことです)。

5
Steven Lu

ステータスを照会する前に、oh-my-zshが特別なgit設定オプションoh-my-zsh.hide-statusをチェックするようになりました。だから走る

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

問題のあるリポジトリ。

5

「af-magic」というテーマを使用していた

「ミューズ」に切り替えることで問題は解決しました。

〜/ .zshrcを編集し、その行を変更します。

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

これらは、シェルの起動速度を最適化し、コマンド実行の遅延を減らすために使用した手順です-

  1. Powerlevel9kを使用している場合は、すぐに powerlevel10k に切り替えることをお勧めします。

Powerlevel10kはZshのテーマです。スピード、柔軟性、および独創的なエクスペリエンスを強調しています。これは、人気のあるPowerlevel9k zshテーマの再実装です。同じ構成の場合はまったく同じに見えますが、プロンプトが10〜100倍速く表示されます。スタックのすべてのレベルで最適化されており、元のリポジトリの4倍の速さでリポジトリをスキャンできる、パッチを当てたバージョンのlibgit2を使用するまでに至ります。インスタントプロンプトなどの機能を備えたテーマが原因ではない場合でも、Zshスタートアップラグを削除できます。

  1. [設定]-> [プロファイル]-> [一般]-> [コマンド]に移動し、ログインシェルの代わりに[コマンド]オプションを選択し、その下のボックスに以下のコマンドを貼り付けます。
login -pfq username /usr/local/bin/zsh -il

新しいタブを開始すると、最後のログイン時間が表示されなくなります。場所/ usr/local/bin/zshにzshが存在しない場合は、brewを使用してzshをインストールする必要があります。 macが提供するデフォルトのzshは/ usr/bin/zshにあり、5.2などの古いバージョンを使用している可能性があるため、iTermまたはoh-my-zshと一緒に使用すると速度が遅くなる可能性があります。

  1. Zshでの貼り付けを高速にするには、ターミナルで以下のコマンドを実行します。
mkdir -p $ZSH_CUSTOM/lib && touch $ZSH_CUSTOM/lib/misc.zsh
  1. ポイント2はすでに遅いログイン時間を処理するはずです。しかし、安全のために以下のコマンドを実行してください
mkdir -p .hushlogin
  1. あなたが使用しているかもしれないプラグインがたくさんあり、遅いとラグを作成します。これらのプラグインを指摘して削除する必要があります。これには、zshプロファイリングが必要です。詳細については、このリンクをクリックしてください-

https://stevenvanbael.com/profiling-zsh-startup

0
Shubham Jain

以下を〜/ .zshenvに追加してください

skip_global_compinit=1
0
FacePalm

〜/ .oh-my-zsh/plugins /ディレクトリをクリアした後、速度が大幅に向上しました。内部には未使用のプラグインがたくさんありました。

0
pinguinjkeke