Whimlog

寝るまでが一日

Zsh をシュッと高速化する

Zsh のレスポンスが悪い

最近会社の PC が新しくなったので、環境の整理をしています。
.zshrc がゴチャゴチャしているかつ、Enter 連打するとなぜか peco + z が発動する現象が起こるのでヤックシェービングを兼ねてチューニングしてみました。 以下の記事を参考にしました。

blog.aqutras.com

改善前

タイムを計測するのは効果がわかりやすいので載せています。数値で見ると既にそれなりのスピードは出ていそうです。

~ ❯❯❯ time ( zsh -i -c exit )
( zsh -i -c exit; )  0.13s user 0.13s system 76% cpu 0.346 total

改善内容

auto compile を追加 (-0.01)
これは無条件におすすめです

[add auto compile · Asuforce/dotfiles@86a6790 · GitHub

~ ❯❯❯ time ( zsh -i -c exit )
( zsh -i -c exit; )  0.12s user 0.11s system 80% cpu 0.287 total

.zshrc から .zshenv環境変数の設定を移動 (+0.01) 遅くなった...けどファイルが整理されるので採用)

mv ENV to .zshenv · Asuforce/dotfiles@5b5ef94 · GitHub

~ ❯❯❯ time ( zsh -i -c exit )
( zsh -i -c exit; )  0.13s user 0.13s system 79% cpu 0.331 total

.zshenv$TMUX の判定を追加 (-0.06)
TMUX が起動していたら環境変数を既に読み込ませているので export の処理をスルーできます。

Don't read ENV when tmux already start. · Asuforce/dotfiles@e8f94d9 · GitHub

~ ❯❯❯ time ( zsh -i -c exit )
( zsh -i -c exit; )  0.07s user 0.04s system 81% cpu 0.135 total

タイムは測ってないですが anyenv init 時に --no-rehash を付けて高速化できます。

add --no-rehash · Asuforce/dotfiles@329f16b · GitHub

まとめ

スコアとコミットだけ載せてますが、雰囲気は伝わると思います。
tmux を使って新しい window or pane を開いた時再度読み込まれてしまうのがよくなかったようです。
かなり早くなったので満足です。次はプラグイン達を整理していきます。