[zsh 고속화] 에~, 그런 플러그인 매니저가 있다면 더 빨리 가르쳐줘, 라고 누나가 분노했다 - Zinit (구명 Zplugin)
TL;DR
2020.03.06 추가
2020.01.19에서 Zplugin은 Zinit이라는 이름으로 변경된 것 같습니다.
명칭 변경에 따라 본 기사의 내용도 Zinit용으로 변경했습니다.
( zdharma/zinit 부터)
그럼에도 불구하고 원래 Zplugin 사용자가해야 할 일은 특별히 없습니다.
Zinit으로 마이그레이션하는 경우 변경해야 할 사항은 두 가지입니다.
zplugin
를 zinit
로 변경 소개
zsh의 시작 속도를 높이려고했습니다.
zplug에서 ZpluginZinit으로 갈아타는 것만으로 시작 시간을 약 1.5초에서 약 0.4초까지 단축할 수 있었습니다.
또한, 기동 시간은 이하의 커맨드로 계측했습니다. 참고치 정도로 생각해 주세요.
$ time ( zsh -i -c exit )
우선 현재
원래 zsh 시작 시간은 약 1.5초였습니다. (설정 파일은 zcompile 완료)
( zsh -i -c exit; ) 1.04s user 0.40s system 94% cpu 1.519 total
( zsh -i -c exit; ) 1.00s user 0.39s system 94% cpu 1.462 total
( zsh -i -c exit; ) 1.02s user 0.40s system 94% cpu 1.502 total
사용하는 플러그인은 다음 세 가지입니다. 말하지 않고 알려진 zplug 신세를지고 있습니다.
$ time ( zsh -i -c exit )
원래 zsh 시작 시간은 약 1.5초였습니다. (설정 파일은 zcompile 완료)
( zsh -i -c exit; ) 1.04s user 0.40s system 94% cpu 1.519 total
( zsh -i -c exit; ) 1.00s user 0.39s system 94% cpu 1.462 total
( zsh -i -c exit; ) 1.02s user 0.40s system 94% cpu 1.502 total
사용하는 플러그인은 다음 세 가지입니다. 말하지 않고 알려진 zplug 신세를지고 있습니다.
momo-lab/zsh-abbrev-alias : 약어를 전개해 준다
zsh-users/zsh-syntax-highlighting : 실행 가능한 명령에 색칠
zsh-users/zsh-completions : 명령 완성
그건 그렇고, 괜찮은 상태의 zsh 시작은 폭속입니다.
( zsh -i -c exit; ) 0.00s user 0.00s system 79% cpu 0.011 total
느린 원인 찾기
먼저 .zshenv
의 시작 부분에 다음을 추가합니다.
.zshenvzmodload zsh/zprof && zprof
그런 다음 .zshrc
의 끝에 다음을 추가합니다.
.zshrcif (which zprof > /dev/null) ;then
zprof | less
fi
결과는 다음과 같습니다. 병목이되어있는 것은 플러그인 관련 같다 (적당).
num calls time self name
-----------------------------------------------------------------------------------
1) 1 254.77 254.77 44.29% 253.25 253.25 44.02% __zplug::log::write::info
2) 5 90.50 18.10 15.73% 90.50 18.10 15.73% __zplug::io::print::f
3) 2 31.36 15.68 5.45% 31.36 15.68 5.45% compaudit
4) 2 61.74 30.87 10.73% 30.39 15.19 5.28% compinit
...
ZpluginZinit
zmodload zsh/zprof && zprof
if (which zprof > /dev/null) ;then
zprof | less
fi
num calls time self name
-----------------------------------------------------------------------------------
1) 1 254.77 254.77 44.29% 253.25 253.25 44.02% __zplug::log::write::info
2) 5 90.50 18.10 15.73% 90.50 18.10 15.73% __zplug::io::print::f
3) 2 31.36 15.68 5.45% 31.36 15.68 5.45% compaudit
4) 2 61.74 30.87 10.73% 30.39 15.19 5.28% compinit
...
ZpluginZinit이라는 플러그인 매니저가 빠르다고 해서 시험해 보는 것에. ( dotfiles를 깨끗하게 깨끗하게하는 김에 노출 - Qiita )
설치는 간단하며 다음을 수행하면됩니다 (불안한 경우 공식 README).
~/.zinit/bin
에 Zinit이 설치됩니다.$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma/zinit/master/doc/install.sh)"
그런 다음 ZpluginZinit에 대해
.zshrc
를 다시 씁니다..zshrc
-source ~/.zplug/init.zsh
-zplug 'momo-lab/zsh-abbrev-alias' # 略語を展開する
-zplug 'zsh-users/zsh-syntax-highlighting' # 実行可能なコマンドに色付け
-zplug 'zsh-users/zsh-completions' # 補完
-# Install check
-if ! zplug check --verbose; then
- printf 'Install? [y/N]: '
- if read -q; then
- echo; zplug install
- fi
-fi
-zplug load --verbose
+### Added by Zplugin's installer
+source "${HOME}/.zinit/bin/zinit.zsh"
+autoload -Uz _zinit
+(( ${+_comps} )) && _comps[zinit]=_zinit
+zinit load momo-lab/zsh-abbrev-alias # 略語を展開する
+zinit load zsh-users/zsh-syntax-highlighting # 実行可能なコマンドに色付け
+zinit load zsh-users/zsh-completions # 補完
그 결과 시작 시간이 약 0.4초가 되었습니다. 이것이라면 거의 시작 시간이 걱정되지 않습니다. ZpluginZinit 공포.
( zsh -i -c exit; ) 0.26s user 0.13s system 93% cpu 0.414 total
( zsh -i -c exit; ) 0.26s user 0.13s system 93% cpu 0.417 total
( zsh -i -c exit; ) 0.24s user 0.12s system 94% cpu 0.379 total
ZpluginZinit으로 더욱 가속화
지연 로드
ice wait
를 사용하여 플러그인을 지연 로드할 수 있습니다.
이것이 매우 강력하고, 예를 들면 다음과 같이 ice wait'0'
로 하면(자), zsh 가 기동한 후에 0초 두고 hoge/hoge 플러그인을 읽어들입니다.
.zshrczinit ice wait'0'; zinit load hoge/hoge # プラグイン読み込み
시작할 때 필요한 플러그인이 아니면 지연 로드해도 문제가 없을 것입니다. 즉, 이 0초 지연 로드에 의해 기동이 더욱 고속화됩니다.
저자는 두 개의 플러그인을 지연로드합니다.
.zshrczinit load momo-lab/zsh-abbrev-alias # 略語を展開する
- zinit load zsh-users/zsh-syntax-highlighting # 実行可能なコマンドに色付け
- zinit load zsh-users/zsh-completions # 補完
zinit load momo-lab/zsh-abbrev-alias # 略語を展開する
+ zinit ice wait'!0'; zinit load zsh-users/zsh-syntax-highlighting # 実行可能なコマンドに色付け
+ zinit ice wait'!0'; zinit load zsh-users/zsh-completions # 補完
(wait'0'
대신 wait'!0'
로 설정하면 읽기 완료 메시지가 표시되지 않습니다.)
지연 로드 후의 기동 시간은 약 0.3초가 되었습니다! ZpluginZinit 공포.
( zsh -i -c exit; ) 0.15s user 0.08s system 93% cpu 0.240 total
( zsh -i -c exit; ) 0.16s user 0.08s system 91% cpu 0.264 total
( zsh -i -c exit; ) 0.17s user 0.09s system 87% cpu 0.293 total
요약
ZpluginZinit의 도입으로, zsh의 기동 시간을 약 1.5초→약 0.4초→약 0.3초까지 단축할 수 있었습니다.
ZpluginZinit보다 빠른 플러그인 관리자를 알고 있다면 알려주세요.
여담 : 제목 정보
이 캐치 타이틀은 복사 메카에서 자동 생성되었습니다.
참고
zinit ice wait'0'; zinit load hoge/hoge # プラグイン読み込み
zinit load momo-lab/zsh-abbrev-alias # 略語を展開する
- zinit load zsh-users/zsh-syntax-highlighting # 実行可能なコマンドに色付け
- zinit load zsh-users/zsh-completions # 補完
zinit load momo-lab/zsh-abbrev-alias # 略語を展開する
+ zinit ice wait'!0'; zinit load zsh-users/zsh-syntax-highlighting # 実行可能なコマンドに色付け
+ zinit ice wait'!0'; zinit load zsh-users/zsh-completions # 補完
( zsh -i -c exit; ) 0.15s user 0.08s system 93% cpu 0.240 total
( zsh -i -c exit; ) 0.16s user 0.08s system 91% cpu 0.264 total
( zsh -i -c exit; ) 0.17s user 0.09s system 87% cpu 0.293 total
ZpluginZinit의 도입으로, zsh의 기동 시간을 약 1.5초→약 0.4초→약 0.3초까지 단축할 수 있었습니다.
ZpluginZinit보다 빠른 플러그인 관리자를 알고 있다면 알려주세요.
여담 : 제목 정보
이 캐치 타이틀은 복사 메카에서 자동 생성되었습니다.
참고
Reference
이 문제에 관하여([zsh 고속화] 에~, 그런 플러그인 매니저가 있다면 더 빨리 가르쳐줘, 라고 누나가 분노했다 - Zinit (구명 Zplugin)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/9sako6/items/23b164a95b91c644aade텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)