回答:
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
た。3秒以上かかっていました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
各行の先頭に採用タイムスタンプが付いたファイルが現在のディレクトリにあるはずです。
秒単位で実行できる場合は、次のように実行できます。
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
です。
差分時間を示すためにinnaMによってvim -V ソリューションを改良しました:
vim -V 2>&1 | perl -MTime::HiRes=time -ne '$a = time unless defined $a; print time - $a, ": ", $_' | tee vilog
プラグインを.vimrcファイルからロードしている場合q
、ファイルを途中で途中まで挿入して終了させると、unix time
コマンドのようにプロセスタイマーを使用できます。より完全に、これは次のようになります:
.vimrc
ファイルをバックアップq
行を挿入するtime vim
繰り返して平均的に電話するこれはエレガントではありませんが、私はそれが仕事を成し遂げると思います。
vimの起動時間をプロファイルするプラグインがあります。
次のtime
ように使用できるbash コマンドはありませんか?
time vim
編集:スクリプトの起動時間は含まれません。代わりに@jamessan提案を使用してください。