답변:
Vim 7.2.269 이상을 사용하는 경우 --startuptime 옵션을 사용할 수 있습니다.
vim --startuptime vim.log
도움에서 ( vim -h
) :
--startuptime <file> Write startup timing messages to <file>
vim --startuptime /dev/stdout +qall
time vim +q
vim의 시작 시간 전체를 원하는 경우도 있습니다.
vim --startuptime /dev/stdout +qall
하고 vim --startuptime vim.log +qall; cat vim.log
.
vim 자체 프로파일 링 메커니즘을 사용할 수 있습니다.
vim --cmd 'profile start profile.log' \
--cmd 'profile func *' \
--cmd 'profile file *' \
-c 'profdel func *' \
-c 'profdel file *' \
-c 'qa!'
위를 실행하면 필요한 모든 정보와 함께 현재 디렉토리에 profile.log라는 파일이 있습니다. 이미 존재하는 기능별 정보와 유사한 스크립트 별 정보 테이블을 얻으려면 다음을 사용하십시오 (vim에서이 파일을 연 후).
" Open profile.log file in vim first
let timings=[]
g/^SCRIPT/call add(timings, [getline('.')[len('SCRIPT '):], matchstr(getline(line('.')+1), '^Sourced \zs\d\+')]+map(getline(line('.')+2, line('.')+3), 'matchstr(v:val, ''\d\+\.\d\+$'')'))
enew
call setline('.', ['count total (s) self (s) script']+map(copy(timings), 'printf("%5u %9s %8s %s", v:val[1], v:val[2], v:val[3], v:val[0])'))
정렬되지는 않지만 :sort
스크립트 수가 너무 많으면 항상 내장 명령을 사용할 수 있습니다 .
dbext.vim
세 가지 초 이상을 복용 한, github.com/johnsyweb/dotfiles/commit/09c3001
gvim --cmd 'profile start profile.log' --cmd 'profile func *' --cmd 'profile file *' -c 'profdel func *' -c 'profdel file *' -c 'qa!'
. vim에 많은 빈 파일이 만들어집니다.
귀하의 질문에 더 잘 대답하기 위해이 Github 프로젝트를 만들었습니다 . 기본적으로 모든 플러그인에 대한 각 함수 호출의 타이밍을 요약합니다. 이는 원시 vim 프로파일 출력에서 명확하지 않지만 중요하지는 않습니다. Bash, Python, R, Ruby는 프로파일 링 결과 생성을 위해 지원됩니다.
다음과 같은 결과가 나타납니다.
다음과 같은 텍스트 출력과 함께 :
Generating vim startup profile...
Parsing vim startup profile...
Crunching data and generating profile plot ...
Your plugins startup profile graph is saved
as `profile.png` under current directory.
==========================================
Top 10 Plugins That Slows Down Vim Startup
==========================================
1 105.13 "vim-colorschemes"
2 42.661 "vim-easytags"
3 31.173 "vim-vendetta"
4 22.02 "syntastic"
5 13.362 "vim-online-thesaurus"
6 7.888 "vim-easymotion"
7 6.931 "vim-airline"
8 6.608 "YankRing.vim"
9 5.266 "nerdcommenter"
10 5.017 "delimitMate"
==========================================
Done!
!
태그 앞에 간단히 태그 를 추가하여 그림에 추가 할 수 있습니다 .
vim -V
타임 스탬프를 추가하고 출력을 분석하는 유틸리티를 통해 출력을 파이프하고 실행할 수 있습니다 . 이 명령 행은 다음을 수행합니다. 예 :
vim -V 2>&1 | perl -MTime::HiRes=time -ne 'print time, ": ", $_' | tee vilog
:q프롬프트로 돌아가려면 맹목적으로 입력해야 할 수도 있습니다 . 그런 다음 vilog
각 줄의 시작 부분에 고용 타임 스탬프가있는 현재 디렉토리에서 파일 을 찾아야합니다 .
1 초 단위로 수행 할 수있는 경우 다음을 수행 할 수 있습니다.
vim -V 2>&1 | perl -ne 'print time, ": ", $_' | tee vilog
R에 의존 하는 @hyiltiz 가 수행 한 작업을 기반으로 필자는 프로파일 러 의 Python 버전 을 만들었습니다 .R 버전 의 시스템에서 더 자주 사용할 수 있기 때문입니다.
확장하기가 약간 더 쉬우므로 기능은 다음과 같습니다.
출력은 vim-plugins-profile이 제공하는 것과 유사합니다.
$ vim-profiler.py -p nvim
Running nvim to generate startup logs... done.
Loading and processing logs... done.
Plugin directory: /home/user/.config/nvim/plugged
=====================================
Top 10 plugins slowing nvim's startup
=====================================
1 3.326 vim-fugitive
2 2.936 tcomment_vim
3 2.315 vim-hybrid
4 1.751 lightline.vim
5 0.959 vim-sneak
6 0.943 supertab
7 0.542 vim-surround
8 0.536 fzf.vim
9 0.450 fzf
10 0.434 auto-pairs
=====================================
No plugin found
입니다.
.vimrc 파일에서 플러그인을로드하는 q
경우 파일을 통해 일부 라인 부분을 종료하여 unix time
명령 과 같은 프로세스 타이머를 사용할 수 있습니다 . 더 철저하게, 이것은 다음과 같습니다
.vimrc
파일 백업q
라인을 삽입time vim
repeteadly 평균이것은 우아하지 않지만 작업이 완료 될 것이라고 생각합니다.
vim 시작 시간을 프로파일 링하는 플러그인이 있습니다.
다음 time
과 같이 사용할 수 있는 bash 명령 이 없습니까?
time vim
편집 : 스크립트 시작 시간을 포함하지 않습니다. 대신 @jamessan 제안을 사용하십시오.