Ohmyzsh: chruby 插件很慢

创建于 2016-02-13  ·  3评论  ·  资料来源: ohmyzsh/ohmyzsh

删除 chruby 插件并将 chruby 手动添加到我的.zshrc使我的终端启动时间缩短了 500 毫秒。

最有用的评论

我很高兴这个修复如此接近,谢谢@T0mK0!

所有3条评论

我可以在我的 OS X 10.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调用上,其中多达三个。 brew命令是一个 ruby​​ 程序,速度不快。 在启动过程中不需要重复调​​用。 至少, chruby插件应该调用一次brew --prefix chruby并将结果缓存在一个变量中以避免冗余调用。 更好的是,切换到使用普通的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作为打开的结果 shell 中的第一个命令。 您最终将获得启动序列的时间戳跟踪。 这将有助于告诉您哪些部分需要这么长时间。 您可以将其粘贴在电子表格中并在后续行中区分时间戳以获得执行时间以使其更容易。 如果您需要帮助分析它,或者从中清除任何密码或令牌并将其作为要点发布。

我很高兴这个修复如此接近,谢谢@T0mK0!

此页面是否有帮助?
0 / 5 - 0 等级