새 터미널을 열 때마다 느려지던 zsh 시작 시간을 Claude Code의 도움을 받아 평균 770ms에서 40ms로 줄였다는 경험담이다. 핵심은 도구를 셸 시작 때 모두 불러오는 대신, 실제로 처음 사용할 때 초기화하는 지연 로딩이다.
원문은 nvm 초기화에 약 300~500ms, pyenv 초기화에 약 100~200ms가 걸리는 등 여러 개발 도구가 시작 시간을 늘렸다고 설명한다. 해결책으로 명령어를 처음 호출할 때 초기화하고 래퍼 함수를 제거해 이후에는 직접 실행하도록 구성했다. Homebrew 환경 정보는 파일에 캐시해 brew 실행 파일이 바뀔 때만 다시 생성했다.
글쓴이는 이런 변경을 적용한 뒤 zsh -i -c exit 측정값이 평균 약 770ms에서 약 40ms로 줄었다고 보고했다. 성능 수치와 비교표는 Claude Code의 도움으로 작성했으며, 환경에 따라 결과가 다를 수 있다고 덧붙였다. 지연 로딩은 시작 시간을 줄이는 대신 해당 터미널 세션에서 각 도구를 처음 쓸 때 초기화 비용이 든다. 글에 제시된 첫 실행 비용은 node·npm·npx 약 400ms, pyenv 약 150ms, gcloud 약 50ms다.
적용 전에는 셸 시작 시간을 측정하고, 느린 명령을 프로파일링해 확인할 수 있다.
time zsh -i -c exit
.zshrc의 시작과 끝에 다음 설정을 추가하면 zprof로 각 명령의 소요 시간을 확인할 수 있다고 안내한다.
# Add to top of .zshrc
zmodload zsh/zprof
# Add to bottom
zprof
글쓴이는 2025년 11월 28일 nvm 대신 fnm으로 바꾸면서 nvm, node, npm, npx 래퍼를 제거했다고 밝혔다. 따라서 해당 래퍼는 nvm을 사용하는 경우에만 참고하라고 설명한다. nvm과 fnm 링크도 제공했다.
추가로 PATH 변경을 한 줄로 합치고 중복된 GPG_TTY 설정을 제거하는 등 설정을 정리했다. 다만 제시된 95% 개선은 글쓴이의 환경에서 측정한 결과이며, 다른 구성에서도 같은 수치가 나온다는 뜻은 아니다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요