2022/08/20 このエントリーをはてなブックマークに追加 はてなブックマーク - zshの起動を速くしたいんや

zshの起動を速くしたいんや

カテゴリ: ,

ということで。



macOSでzshを使っていたりtmuxを使っていたりzshにプラグインを突っ込んだりzshrcがとっ散らかったりしているプログラマです。


うわっ・・・、私のzshおそすぎ!?(某画像)
ってなったので速くしたい。
早速原因を突き止めるべく計測しました

こちらの記事によると
https://ohbarye.hatenablog.jp/entry/2019/04/27/speed-up-zsh-start-up-time
これらを足せば良いらしい。

# .zshenv
zmodload zsh/zprof && zprof
# .zshrc
if (which zprof > /dev/null 2>&1) ;then
  zprof
fi

zshを起動するとこういうのが出てくるようになった。

-----------------------------------------------------------------------------------
num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    2         182.17    91.08   37.65%    182.17    91.08   37.65%  compaudit
 2)    1          93.91    93.91   19.41%     93.33    93.33   19.29%  _zsh_highlight_load_highlighters
 3)    1         122.71   122.71   25.36%     85.70    85.70   17.71%  prompt
 4)    1         237.91   237.91   49.18%     55.75    55.75   11.52%  compinit
 5)    2          33.42    16.71    6.91%     32.95    16.48    6.81%  prompt_spaceship_setup

spaceshipやzsh_highlightとかもあるのはさておき、
sdkmanの起動で2〜3割かかっているようだった。
(先程のzprofは改善後なのでsdkmanの姿はなかったが)


こちらの記事にあやからせていただき
https://hatappi.blog/entry/2019/06/01/112358

こんな感じの関数で解決することにしてみた。

sdk() {
  #THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
  unfunction "$0"
  export SDKMAN_DIR="${HOME}/.sdkman"
  [[ -s "${HOME}/.sdkman/bin/sdkman-init.sh" ]] && source "${HOME}/.sdkman/bin/sdkman-init.sh"
  $0 "$@"
}

unfunctionを仕込むことで、初回に1回だけ呼ばれる関数になっているらしい。
sdkコマンドを打つときについでにロード。
これでzsh起動がちょびっと早く出来た。



0 件のコメント:

コメントを投稿

GA