zsh commence incroyablement lentement

63

Il faut environ une seconde et demie à ZSH pour créer une nouvelle fenêtre de terminal et être prêt. Je suis à peu près sûr que le coupable est compinit.

Je n'ai pas réussi à trouver une bonne documentation, compinit,mais il semblerait qu'il faille mettre en cache tous les éléments nécessaires dans certains fichiers .zcompdump.

Des astuces pour l'accélérer?

Eli
la source

Réponses:

33

oh-my-zshprenait environ 1,5 secondes pour démarrer sur mon ordinateur portable. J'ai écrit certaines des mesures que j'ai prises pour réduire ce temps à environ 0,25 seconde .

Une autre bonne âme a résumé les étapes nécessaires pour intégrer mes modifications dans votre copie de oh-my-zsh.

Le plus gros problème est qu’on compinitappelait tout un tas de temps supplémentaires au lieu d’une seule fois après que le fpath ait été complètement défini. J'ai fait ces changements sur ma branche de oh-my-zshgithub. Les changements ont été discutés sur github et ils semblent bien fonctionner pour quelques personnes. Espérons que les changements seront fusionnés dans oh-my-zshun proche avenir.

Pat Regan
la source
4
Pour les futurs lecteurs, je pense que tous ces changements ont été fusionnés en amont.
Michael Mior
1
Les changements ont peut-être été déplacés en amont, mais la suppression de Git des plugins m'a considérablement aidé.
kylehotchkiss
25

Bien que ZSH ait son lot de ralentissements, si vous trouvez la fenêtre du terminal vierge pendant quelques instants avant de voir la Last Login:ligne, vous devrez effacer vos fichiers journaux pour améliorer la vitesse. Cela reste un problème pour OSX Lion et devra être fait tous les plusieurs mois. Lame, je sais.

La commande est:

sudo rm -rf /private/var/log/asl/*.asl

Bien sûr, vous devez lire cet article à l'avance et ainsi savoir exactement ce qui se passe, car il sudo rmfaut penser à tout ce qui est dit . Je ne mets cela que ici parce que votre utilisation de ZSH prouve votre compétence avec la ligne de commande pour commencer.

Kylehotchkiss
la source
1
Merci, une solution si simple pour quelque chose qui me tourmente depuis si longtemps!
Dean
7
Je recommande de ne pas utiliser -rcar aucun répertoire n'est impliqué et ce n'est pas nécessaire. L'omettre entraîne moins de larmes si quelqu'un tape sudo rm -rf / private/var/log/asl*.asl(espace avant privé) par erreur.
Dean
1
Ou encore plus infaillible, cd /private/var/log/aslalors rm -f *.asl. Aussi pour mémoire, cette réponse m'a sauvé d'un temps de démarrage qui approchait de 10 secondes, merci beaucoup!
Garrett Disco
1
Travaillé pour moi! BTW trash /private/var/log/asl*.asl. trashdevra être installé, bien sûr. brew install trash
Mike D
12

Ma plus grande amélioration provient de la suppression d'éléments de la section plugin = (). Les plugins 'github' et 'brew' sont très lents à charger.

J'ai également enlevé le hub sur lequel j'avais un alias gitet qui a également accéléré l'invite.

J'utilise '/ usr / bin / time zsh -i -c exit' pour enregistrer les temps de démarrage, mais compinitcela ne semble pas faire une différence assez importante pour moi.

Ce serait formidable d'entendre ce que les autres font pour accélérer les choses.

xer0x
la source
1
Supprimer les plugins githubet a brewrésolu mon problème immédiatement.
Peter Niederwieser
gitet les brewplugins sont essentiels pour moi. En supprimant le rubyplugin résolu mon problème. Merci.
Ivan ZG Xiao
6

Utilisez-vous le pré-installé /bin/zshou un autre? Je demande, parce que le zsh que j’ai installé avec fink commence terriblement lentement à cause de l’inclusion de modèles zsh , tandis que la vanille commence tout de suite.

Est-ce que courir avec un dumpfile ( compinit -d dumpfile) explicite le rend plus rapide? La page de manuel indique que

La prochaine invocation de compinit lira le fichier vidé au lieu d’effectuer une initialisation complète.

Joey1978
la source
2
J'utilise Oh My Zsh (qui, à mon avis, utilise la valeur par défaut / bin / zsh). Lorsque je désactive le chargement de tous les plugins de Oh My Zsh, etc., il se charge très rapidement, mais je pense que dans ce cas, il compinitn'est jamais appelé. Lorsque j'appelle manuellement, compinitcela prend un peu de temps. Peut-être est-ce simplement parce que Oh My Zsh ajoute de nombreuses liaisons à compinit?
Eli
5

Maintenant, oh-my-zsh vérifie l'option de configuration spéciale de git oh-my-zsh.hide-status avant de demander le statut. Donc courir

Git config oh-my-zsh.hide-status 1

sur un dépôt problématique.

Artem Tikhomirov
la source
pour moi, je devais désactiver le plugin git .zshrc. Je suis actuellement confronté à des problèmes de réponse Internet lente, ce qui a ralenti zsh
Paschalis
5

Zsh seul démarre en environ 0,1 seconde pour moi, ce qui est amplement suffisant. Je viens de remarquer que lorsque je me suis approché de la marque de l'historique des commandes 50 000, il est devenu plus proche de 3 secondes pour charger la première invite.

Je ne sais pas comment vous trouvez toutes ces autres raisons d’un démarrage lent, mais la mienne était exactement ce que j’avais deviné. J'ai fait un mv ~/.zsh_history zsh_history_backupbam, démarrage de 3 secondes est maintenant démarrage de 0,1 seconde. Curieusement, /usr/bin/time /bin/zsh -i -c exitne parvient pas à capturer le temps qu'il faut pour charger dans l'historique.

Si vous n'avez pas des dizaines de milliers de commandes dans votre historique zsh, ce n'est pas ça. Mon ~/.zsh_historymesuré 1.8MB. Il est tout à fait possible de coller accidentellement un gros morceau de contenu en tant que commande dans un terminal, ce qui entraînera également une augmentation rapide de l'historique (bien que ce soit quelque chose de vraiment à éviter, car il peut évidemment être extrêmement destructeur).

Steven Lu
la source
C'est la réponse Si oh-my-zsh n'a rien fait de spécial (beaucoup de plugins et d'addons), je vous garantis que c'est grâce au journal de l'historique. Le changement est immédiat.
Sebastialonso
2

J'utilisais le thème "af-magic"

Passer à "muse" a résolu le problème.

Éditez ~ / .zshrc et modifiez cette ligne:

#ZSH_THEME="random"
#ZSH_THEME="af-magic"
ZSH_THEME="muse"
mika
la source
merci pour la réponse, j'ai trouvé que passer de la magie à quelque chose d'autre a résolu le problème. Fait intéressant, la restauration de la magie en Afrique fonctionne toujours très bien. Je ne sais pas ce qui s'est passé sous le capot.
Sarat
0

J'ai vraiment amélioré ma vitesse après avoir effacé le répertoire ~ / .oh-my-zsh / plugins /. Il y avait beaucoup de plugins inutilisés à l'intérieur.

pinguinjkeke
la source
0

Ajoutez ce qui suit à votre ~ / .zshenv

skip_global_compinit=1
FacePalm
la source