Vimのstartuptime出力結果の読み方
Vimには処理時間を計測する機能があり、以下のようにvimの引数に --startuptime
を付けることで指定した{logfilename}
に処理時間を計測した結果をファイルとして出力できる。
vim --startuptime {logfilename}
その出力結果は以下の形式で出力される。
times in msec clock self+sourced self: sourced script clock elapsed: other lines 000.000 000.000: --- VIM STARTING --- 000.000 000.000: Allocated generic buffers 002.000 002.000: locale set 002.000 000.000: clipboard setup 002.000 000.000: window checked 003.000 001.000: inits 1 009.000 006.000: parsing arguments 009.000 000.000: expanding arguments 025.000 016.000: shell init 026.000 001.000: Termcap init 026.000 000.000: inits 2 026.000 000.000: init highlight 658.000 312.000 312.000: sourcing C:\Users\naru1/.vimrc.c 658.000 514.000 202.000: sourcing C:\Users\naru1/.vimrc.b 658.000 632.000 118.000: sourcing C:\Users\naru1/.vimrc.a 658.000 632.000 000.000: sourcing $HOME\_vimrc 658.000 000.000: sourcing vimrc file(s) 660.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\getscriptPlugin.vim 661.000 001.000 001.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\gzip.vim 661.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\logiPat.vim 662.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\manpager.vim 662.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\matchparen.vim 663.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\netrwPlugin.vim 664.000 001.000 001.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\rrhelper.vim 664.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\spellfile.vim 664.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\tarPlugin.vim 665.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\tohtml.vim 665.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\vimballPlugin.vim 666.000 000.000 000.000: sourcing C:\Users\naru1\vim-on-windows\runtime\plugin\zipPlugin.vim 666.000 006.000: loading plugins 666.000 000.000: loading packages 666.000 000.000: loading after plugins 666.000 000.000: inits 3 667.000 001.000: reading viminfo 667.000 000.000: setting raw mode 701.000 034.000: start termcap 701.000 000.000: clearing screen 702.000 001.000: opening buffers 702.000 000.000: BufEnter autocommands 702.000 000.000: editing files in windows 703.000 001.000: VimEnter autocommands 703.000 000.000: before starting main loop 710.000 007.000: first screen update 710.000 000.000: --- VIM STARTED ---
この出力は大きく以下の2つの形式で出力されていることがわかる。
000.000 000.000: xxx
000.000 000.000 000.000: xxx
まず、測定時間らしきもの 000.000
の単位はミリ秒である。
たとえば 008.012
の場合、8.012ミリ秒掛ったことを意味する。
000.000 000.000: xxx
の読み方
1つ目の000.000
は--- VIM STARTING ---
からの現時点までに掛った測定時間を意味している。
2つ目の000.000
はその行の処理時間のみを意味している。
000.000 000.000 000.000: xxx
の読み方
この形式はVim scriptファイルを読み込んでいるときの処理時間を出力することに使用される。
1つ目の000.000
は--- VIM STARTING ---
からの現時点までに掛った測定時間を意味している。
2つ目の000.000
はそのVim scriptファイルの処理時間を意味する。そのファイルが別のVim scriptファイルを読み込んでいる場合、その読み込んだVim scriptファイルの処理時間はこの値に含まれる。
3つ目の000.000
はそのVim scriptファイルの処理時間を意味する。そのファイルが別のVim scriptファイルを読み込んでいる場合、その読み込んだVim scriptファイルの処理時間はこの値に含まれない。
たとえば、上記の
658.000 312.000 312.000: sourcing C:\Users\naru1/.vimrc.c 658.000 514.000 202.000: sourcing C:\Users\naru1/.vimrc.b 658.000 632.000 118.000: sourcing C:\Users\naru1/.vimrc.a
はそれぞれ以下のVim scriptファイルである。
.vimrc.a
sleep 100m source .vimrc.b
.vimrc.b
sleep 200m source .vimrc.c
.vimrc.c
sleep 300m
そして、.vimrcから.vimrc.aを読み込んでいる。
これからわかるように3行目の632.000
は.vimrc.aが読み込んでいる.vimrc.b、.vimrc.bが読み込んでいる.vimrc.cの処理時間を含んでいることがわかる。