Ohmyzsh: le plugin chruby est lent

Créé le 13 févr. 2016  ·  3Commentaires  ·  Source: ohmyzsh/ohmyzsh

La suppression du plugin chruby et l'ajout manuel de chruby à mon .zshrc ont pris 500 ms de temps de démarrage de mon terminal.

Commentaire le plus utile

Je suis content de ce correctif donc fermeture, merci @T0mK0 !

Tous les 3 commentaires

Je peux reproduire sur ma machine 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

La plupart de son temps est consacré à des appels de brew --prefix chruby , dont il fait jusqu'à trois. La commande brew est un programme ruby, et pas rapide. Pas quelque chose à appeler à plusieurs reprises lors du démarrage. Au moins, le plugin chruby devrait appeler brew --prefix chruby une fois et mettre en cache le résultat dans une variable pour éviter les appels redondants. Mieux encore, passez à l'utilisation brew --prefix et construisez le chemin vers chruby en zsh avec $(brew --prefix)/opt/chruby . L'appel simple brew --prefix est optimisé et ne prend qu'environ 15 ms sur un système rapide.

Pour référence future, vous pouvez effectuer vous-même un profilage comme celui-ci pour diagnostiquer les problèmes de performances :

Collez ceci au début de vous ~/.zshrc .

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

Ensuite, exécutez zsh -lx 2>zsh-startup.log et faites exit comme première commande dans le shell résultant qui s'ouvre. Vous vous retrouverez avec une trace horodatée de votre séquence de démarrage. Cela vous aidera à savoir quelles parties prennent autant de temps. Vous pouvez le coller dans une feuille de calcul et différencier les horodatages dans les lignes suivantes pour obtenir des temps d'exécution afin de faciliter les choses. Ou supprimez tous les mots de passe ou jetons et publiez-les en tant qu'essentiel si vous avez besoin d'aide pour les analyser.

Je suis content de ce correctif donc fermeture, merci @T0mK0 !

Cette page vous a été utile?
0 / 5 - 0 notes