60

ZSH занимает около полутора секунд от создания нового окна терминала до готовности. Я почти уверен, что виновником является compinit .

Я не смог найти хорошую документацию по compinit, но похоже, что он должен кэшировать все необходимые вещи в некоторый файл, например .zcompdump .

Какие-нибудь хитрости по ускорению?

9 ответов9

33

oh-my-zsh около 1,5 секунд для запуска на моем ноутбуке. Я записал некоторые шаги, которые я предпринял, чтобы снизить это примерно до 0,25 секунды.

Другая добрая душа суммировала шаги, необходимые для интеграции моих изменений в вашу копию oh-my-zsh.

Самая большая проблема в том, что compinit целая куча лишних раз, а не один раз после того, как fpath был полностью определен. Я внес эти изменения в мою ветку oh-my-zsh на github. Изменения были обсуждены на GitHub, и они, кажется, работают хорошо для нескольких человек. Надеемся, что изменения будут объединены в oh-my-zsh в ближайшем будущем.

24

Хотя у ZSH есть своя собственная доля замедлений, если вы обнаружите, что окно терминала пустое за несколько секунд до того, как вы увидите строку « Последний вход в Last Login: , вам нужно будет очистить файлы журнала, чтобы увидеть улучшения скорости. Это все еще проблема OSX Lion, и ее нужно будет делать каждые несколько месяцев. Хром, я знаю.

Команда:

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

Конечно, вам нужно прочитать эту статью заранее, чтобы вы точно знали, что происходит, потому что нужно запускать все, что говорит sudo rm . Я поместил это здесь только потому, что использование ZSH подтверждает вашу компетентность в командной строке для запуска.

12

Мое самое большое улучшение - это удаление элементов из раздела плагинов =(). Плагины «github» и «brew» загружаются очень медленно.

Я также удалил хаб , который я git псевдоним и что ускорило подсказку , а также.

Я использовал '/usr/bin/time zsh -i -c exit' для записи времени запуска, однако compinit , похоже, не имеет для меня большого значения.

Было бы здорово услышать, что другие делают, чтобы ускорить это.

6

Используете ли вы предустановленный /bin/zsh или другой? Я спрашиваю, потому что zsh, который я установил через fink, запускается ужасно медленно из-за включения шаблонов zsh, в то время как vanilla запускается сразу.

Заставляет ли запуск с явным файлом дампа (compinit -d dumpfile) идти быстрее? На странице руководства говорится, что

Следующий вызов compinit будет читать дамп-файл вместо полной инициализации.

5

Zsh сам по себе запускается примерно за 0,1 секунды для меня, что вполне достаточно. Я только что заметил, когда приблизился к отметке истории 50 000 команд, что для загрузки первой подсказки стало более 3 секунд.

Я не знаю, как вы, ребята, находите все эти другие причины медленного стартапа, но моя была именно тем, о чем я догадывался. Я сделал mv ~/.zsh_history zsh_history_backup и bam, 3-секундный запуск теперь 0,1-секундный запуск. Любопытно, что /usr/bin/time /bin/zsh -i -c exit не фиксирует время загрузки истории.

Если в вашей истории zsh нет десятков тысяч команд, то это не так. Моя ~/.zsh_history измерена 1.8MB. Очень возможно случайно вставить большой кусок материала в качестве команды в терминал, это также приведет к быстрому переполнению истории (хотя этого следует избегать, поскольку это может быть чрезвычайно разрушительным).

5

Теперь oh-my-zsh проверяет специальную опцию конфигурации git oh-my-zsh.hide-status перед запросом статуса. Так беги

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

на проблемном репозитории.

1

Я использовал тему "аф-магии"

Переход на "музу" решил проблему.

Отредактируйте ~/.zshrc и измените эту строку:

#ZSH_THEME="random"
#ZSH_THEME="af-magic"
ZSH_THEME="muse"
0

Добавьте следующее к вашему ~/.zshenv

skip_global_compinit=1
0

У меня действительно большие улучшения скорости после очистки каталога ~/ .oh-my-zsh/ plugins/. В нем было много неиспользуемых плагинов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .