zshの起動を高速化する方法
ネタがないので、昔こんなことをやってzshの起動を高速化したよというのを共有したいと思います。
計測
〜が遅いという場合、プロファイリングするのが定石ですね。
http://blog.uu59.org/2013-06-01-zsh-optimize.html という素晴らしい記事を参考に、
ボトルネックを割り出しました。
↑の記事に全て書いてますが、一応プロファイリングの方法をコチラにも書いておくと、
.zshenvの先頭行に↓を足す
zmodload zsh/zprof
.zshrcの最後の行に↓を足す
if type zprof > /dev/null 2>&1; then zprof | less fi
という感じ。
新しくzshを起動すると、lessで↓のようなプロファイリング結果が開きます。
num calls time self name ----------------------------------------------------------------------------------- 1) 8 103.24 12.91 54.43% 55.28 6.91 29.14% -zgen-source 2) 8 142.31 17.79 75.03% 38.30 4.79 20.19% zgen-load 3) 1 45.19 45.19 23.82% 28.76 28.76 15.16% compinit 4) 2 16.43 8.22 8.66% 16.43 8.22 8.66% compaudit 5) 1 15.95 15.95 8.41% 15.95 15.95 8.41% _zsh_highlight_load_highlighters 6) 3 6.69 2.23 3.53% 6.69 2.23 3.53% afu-register-zle-accept-line 7) 1 5.67 5.67 2.99% 5.67 5.67 2.99% _zsh_highlight_bind_widgets 8) 1 5.33 5.33 2.81% 5.33 5.33 2.81% afu-keymap+widget 9) 2 3.97 1.98 2.09% 3.97 1.98 2.09% afu-install-tracking-completer 10) 2 3.52 1.76 1.86% 3.52 1.76 1.86% async_init ・・・
自分の場合
当時、antigenを使っていたのですが、コイツがボトルネックだと判明し、zgenに乗り換えました。
どんなものかは、↓の昔の記事で解説しているので、よろしければご一読を。
その他やったこと
themeはpureというミニマムで高速なヤツにしている
速いだけでなく、色々と自分好みだったりします。
xenv(plenv, pyenv, rbenv)には--no-rehash
をつけている
プロファイリングの記事と同じ、uu59さんの記事を参考に
http://blog.uu59.org/2014-01-06-fast-rbenv.html
まとめ
普段、ターミナルの中で生活している人は、zshの起動速度は生産性に直結するので、 たまには見直すことも大事ですよね
https://github.com/yukidarake/dotfiles/blob/master/.zshrc
↑で、私の.zshrcを管理しているので、興味ある方は参考にしてみてください。
では!