Ohmyzsh: chrubyプラグインが遅い

作成日 2016年02月13日  ·  3コメント  ·  ソース: ohmyzsh/ohmyzsh

chrubyプラグインを削除し、chrubyを.zshrcに手動で追加すると、ターミナルの起動時間が500ミリ秒短縮されました。

最も参考になるコメント

私はこの修正に満足しているので、@ T0mK0に感謝します!

全てのコメント3件

OS X10.9.5マシンで再現できます。

+ 1455372625.828910 /Users/janke/.oh-my-zsh/oh-my-zsh.sh:81> plugin=chruby
+ 1455372625.828954 /Users/janke/.oh-my-zsh/oh-my-zsh.sh:82> [ -f /Users/janke/.oh-my-zsh-custom/plugins/chruby/chruby.plugin.zsh ']'
+ 1455372625.829008 /Users/janke/.oh-my-zsh/oh-my-zsh.sh:84> [ -f /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh ']'
+ 1455372625.829074 /Users/janke/.oh-my-zsh/oh-my-zsh.sh:85> source /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh
+ 1455372625.829375 /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh:17> alias 'rubies=chruby'
+ 1455372625.829660 /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh:36> _ruby-build_installed
+ 1455372625.829715 _ruby-build_installed:1> whence ruby-build
+ 1455372625.830336 /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh:66> _homebrew-installed
+ 1455372625.830387 _homebrew-installed:1> whence brew
+ 1455372625.830445 /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh:66> _chruby-from-homebrew-installed
+ 1455372625.831099 _chruby-from-homebrew-installed:1> brew --prefix chruby
+ 1455372626.053828 _chruby-from-homebrew-installed:1> [ -r /usr/local/opt/chruby ']'
+ 1455372626.054501 /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh:67> brew --prefix chruby
+ 1455372626.269022 /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh:67> source /usr/local/opt/chruby/share/chruby/chruby.sh
...
+ 1455372626.271227 /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh:68> brew --prefix chruby
+ 1455372626.494185 /Users/janke/.oh-my-zsh/plugins/chruby/chruby.plugin.zsh:68> source /usr/local/opt/chruby/share/chruby/auto.sh

その時間のほとんどはbrew --prefix chrubyの呼び出しに費やされており、そのうち最大3回の呼び出しを行っています。 brewコマンドはrubyプログラムであり、高速ではありません。 起動時に繰り返し呼び出すものではありません。 少なくとも、 chrubyプラグインはbrew --prefix chrubyを1回呼び出し、冗長な呼び出しを避けるために結果を変数にキャッシュする必要があります。 さらに良いことに、プレーンなbrew --prefixの使用に切り替えて、 $(brew --prefix)/opt/chrubyを使用してzshでchrubyへのパスを作成します。 プレーンなbrew --prefix呼び出しは最適化されており、高速システムでは約15ミリ秒しかかかりません。

将来の参考のために、パフォーマンスの問題を診断するために、このようなプロファイリングを自分で行うことができます。

あなたの最初にこれを貼り付けてください~/.zshrc

# Debugging prompt with timestamp for profiling
PS4=$'+ %D{%s.%6.} %N:%i> '

次に、 zsh -lx 2>zsh-startup.logを実行し、開いた結果のシェルの最初のコマンドとしてexitを実行します。 起動シーケンスのタイムスタンプ付きのトレースが表示されます。 これは、どの部分に非常に時間がかかっているかを知るのに役立ちます。 スプレッドシートに貼り付けて、後続の行のタイムスタンプを比較し、実行時間を取得して簡単にすることができます。 または、パスワードやトークンをスクラブして、分析の手助けが必要な場合は要点として投稿してください。

私はこの修正に満足しているので、@ T0mK0に感謝します!

このページは役に立ちましたか?
0 / 5 - 0 評価