내 셸이 길을 취하고있는 것 같습니다. 시작하기에 너무 오래 걸립니다. 프로파일 링 할 방법이 없으므로 속도를 늦추는 것이 무엇인지 파악할 수 있습니까?내 .zshrc/.zshenv를 프로파일 링 할 수 있습니까?
42
A
답변
46
시도 파일의 시작 부분에 이것을 추가 :
# set the trace prompt to include seconds, nanoseconds, script name and line number
# This is GNU date syntax; by default Macs ship with the BSD date program, which isn't compatible
PS4='+$(date "+%s:%N") %N:%i> '
# save file stderr to file descriptor 3 and redirect stderr (including trace
# output) to a file with the script's PID as an extension
exec 3>&2 2>/tmp/startlog.$$
# set options to turn on tracing and expansion of commands contained in the prompt
setopt xtrace prompt_subst
이것은 말 :
# turn off tracing
unsetopt xtrace
# restore stderr to the value saved in FD 3
exec 2>&3 3>&-
그리고 당신은 실행의 epoch_second.nanosecond 시간을 보여주는 자세한 로그를 얻어야한다 각 줄의. GNU date
(및 OS 지원)은 나노초 출력이 필요합니다.
편집 :
추가 의견
편집 2 : 나중에 zsh을 4.3.12 이상을 사용한다면
것은, 당신이 date
명령을 사용하는 대신이 같은 PS4
을 설정 할 수 있어야한다 :
zmodload zsh/datetime
setopt promptsubst
PS4='+$EPOCHREALTIME %N:%i> '
Linux 및 OS X 모두에서 나노초 정밀도를 제공해야합니다.
2
당신의 첫 번째 의심스러운 시점에서 당신의 타이머를 시작 할 수 ~/.zshrc
(또는 시작 부분에) :
integer t0=$(date '+%s') # move this around
... maybe something suspect ...
# End of zshrc
function {
local -i t1 startup
t1=$(date '+%s')
startup=$((t1 - t0))
[[ $startup -gt 1 ]] && print "Hmm, poor shell startup time: $startup"
}
unset t0
내가 너무 느린 시작을 참조 어느 경우 나 경고, 내가로에두고 영구 포장지.
더욱 정교한 측정을 위해 에는 zprof
이라는 zsh 모듈이 있습니다. ~/.zshrc
의 내용을 zmodload zsh/zprof
및 zprof
에 일시적으로 래핑하는 것만 큼 간단합니다. 이렇게하면 해석하기 쉬운 간단한 프로파일 링 테이블이 덤프됩니다.
자세한 내용은 zshmodules(1)
맨 페이지를 참조하십시오.
내가 (체크-변경 vcs_info, 항원, NVM, zsh을-마임 설치, 통역 버전 확인 등 rbenv 초기화) 나는 미리 알림로 SLOW
주석을 추가하고, 시도 특히 느린 것들을 찾을 수
관련 문제
- 1. VS2010 프로파일 러 : 특정 방법을 프로파일 링 할 수 있습니까?
- 2. Ms 테스트 통합 테스트를 프로파일 링 할 수 있습니까?
- 3. Ruby on Rails에서 어떻게 요청을 프로파일 링 할 수 있습니까?
- 4. mysql 프로파일 링 툴은 다른 연결을 모니터 할 수 있습니까?
- 5. 순수 DLL을 어떻게 프로파일 링 할 수 있습니까?
- 6. Ruby에서 파일 시스템 상호 작용을 프로파일 링 할 수 있습니까?
- 7. 파이썬 스레드 프로파일 링
- 8. 셀러리 작업 프로파일 링
- 9. JNI 애플리케이션 프로파일 링
- 10. JVM을 원격으로 프로파일 링
- 11. 프로파일 링 자바
- 12. C++ 프로파일 링 : KiFastSystemCallRet
- 13. Clojure 프로파일 링 도구?
- 14. 프로파일 링 지침
- 15. .NET 할당 프로파일 링
- 16. 원격 CUDA 프로파일 링?
- 17. 연결된 서버 프로파일 링
- 18. 메모리 프로파일 링 도구
- 19. 서블릿 프로파일 링
- 20. R의 메모리 프로파일 링
- 21. Java 프로파일 링, 성능 튜닝 및 메모리 프로파일 링
- 22. HashMap 프로파일 링
- 23. iPhone 쉐이더 프로파일 링
- 24. NetBeans에서 프로파일 링
- 25. .net 라이브러리 프로파일 링
- 26. OpenCL 커널 프로파일 링
- 27. 프로파일 링 fuse-python
- 28. mex-functions 프로파일 링
- 29. . 원격 컴퓨터를 프로파일 링 할 수있는 .net 메모리 프로파일 러
- 30. 레일에서의 프로파일 링
원래 게시 한 내용에 매우 중요한 공간을 추가했습니다. –
'setopt prompt_subst'도 확인하십시오. 그렇지 않으면'$ (date ..)'부분이 대체되지 않습니다. – blueyed
위의 각 행이 정확히 무엇을하는지에 대해 더 많은 메모를 추가 할 수 있습니까? –