8 votes

Comment déboguer zsh lorsque le démarrage est lent ?

J'utilise Z shell dans iTerm2 et chaque fois que j'ouvre une nouvelle fenêtre ou un nouvel onglet, le chargement prend environ 8 à 9 secondes.

J'ai trouvé des informations sur la façon de déboguer zsh. Je suis tombé sur ceci Accélérer ma coquille J'ai également trouvé un script sur ACCÉLÉRER ZSH ET OH-MY-ZSH .

En exécutant le script, j'obtiens ceci

 for i in $(seq 1 10); do /usr/bin/time /bin/zsh -i -c exit; done
        1.56 real         0.76 user         0.47 sys
        1.30 real         0.74 user         0.44 sys
        1.31 real         0.74 user         0.44 sys
        1.30 real         0.74 user         0.44 sys
        1.31 real         0.74 user         0.44 sys
        1.31 real         0.74 user         0.44 sys
        1.30 real         0.74 user         0.44 sys
        1.29 real         0.74 user         0.44 sys
        1.31 real         0.75 user         0.44 sys
        1.31 real         0.74 user         0.44 sys

J'utilise le plugin antigène.

Une idée de ce qui ajoute 5 à 6 secondes supplémentaires ? Comment puis-je déboguer ce problème ?

10voto

Yuri Gurin Points 49

J'ai trouvé le problème. Le problème n'était pas directement lié à .zshrc car le fait de commenter tout le fichier m'a donné les mêmes résultats. Il m'est apparu clairement que le problème se produisait avant l'entrée en vigueur du .zshrc a été chargé. Mon conseil à tous ceux qui ont un problème avec zsh est de regarder tous les composants de zsh . D'après l'article, je pense qu'il s'agit soit .zlogin ou .zprofile . zlogin était vide alors que .zprofile avait plus de 2000 lignes de eval "$(/opt/homebrew/bin/brew shellenv)" . Supprimer tout ce qui se trouve dans .zprofile a résolu le problème pour moi, mais quelques instants plus tard, les commandes en double sont réapparues. Dans mon .zshrc la question était la suivante :

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/[your-user-name]/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

que j'ai remplacé par

#echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/[your-user-name]/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

Je n'ai aucune idée de la raison pour laquelle homebrew avait cette configuration dans mon .zshrc Cependant, j'ai rencontré d'autres utilisateurs qui ont rencontré ce problème. https://github.com/Homebrew/discussions/discussions/446#discussioncomment-1084000

0voto

Oskar Points 1242

À titre de comparaison, voici les temps de fonctionnement du Mac Mini d'entrée de gamme, le moins cher, et sans oh-my-zsh

for i in $(seq 1 10); do /usr/bin/time /bin/zsh -i -c exit; done
        0.02 real         0.00 user         0.00 sys
        0.01 real         0.00 user         0.00 sys
        0.01 real         0.00 user         0.00 sys
        0.00 real         0.00 user         0.00 sys
        0.00 real         0.00 user         0.00 sys
        0.00 real         0.00 user         0.00 sys
        0.00 real         0.00 user         0.00 sys
        0.00 real         0.00 user         0.00 sys
        0.00 real         0.00 user         0.00 sys
        0.00 real         0.00 user         0.00 sys

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X