Remover o plugin chruby e adicionar chruby ao meu .zshrc
manualmente tirou 500ms do tempo de inicialização do meu terminal.
Posso reproduzir na minha máquina 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
A maior parte do tempo está sendo gasto em chamadas brew --prefix chruby
, das quais está fazendo até três. O comando brew
é um programa Ruby, e não rápido. Não é algo para chamar repetidamente durante a inicialização. No mínimo, o plugin chruby
deve chamar brew --prefix chruby
uma vez e armazenar o resultado em uma variável para evitar chamadas redundantes. Melhor ainda, mude para usar brew --prefix
simples e construa o caminho para chruby em zsh com $(brew --prefix)/opt/chruby
. A chamada simples brew --prefix
é otimizada e leva apenas cerca de 15 ms em um sistema rápido.
Para referência futura, você mesmo pode criar perfis como este para diagnosticar problemas de desempenho:
Cole isso no início de você ~/.zshrc
.
# Debugging prompt with timestamp for profiling
PS4=$'+ %D{%s.%6.} %N:%i> '
Em seguida, execute zsh -lx 2>zsh-startup.log
e faça exit
como o primeiro comando no shell resultante que é aberto. Você terminará com um rastreamento com carimbo de data/hora de sua sequência de inicialização. Isso ajudará a dizer quais partes estão demorando tanto. Você pode colocá-lo em uma planilha e diferenciar os timestamps nas linhas subsequentes para obter tempos de execução para facilitar. Ou limpe todas as senhas ou tokens dele e publique-o como uma essência se precisar de ajuda para analisá-lo.
Estou feliz com essa correção para fechar, obrigado @T0mK0!
Comentários muito úteis
Estou feliz com essa correção para fechar, obrigado @T0mK0!