Home > Vim Hacks > Hack #99: 起動に時間のかかるプラグインを探す

Hack #99: 起動に時間のかかるプラグインを探す

Vim には便利なプラグインがたくさんありますが、大量にインストールすると起動に時間がかかるようになってしまいます。そこで、Vim のプロファイリング機能を使って起動に時間のかかっているプラグインを探す方法を紹介します。

追記

Vim 7.2.269 から –startuptime と言う起動時のプロファイルを簡単に行うためのコマンドライン引数が追加されました。


vim --startuptime=result.txt

7.2.286 からは引数の形式が変更されています。


vim --startuptime result.txt

このようにすることで、Huge版でなくても手軽にプロファイルを行う事が出来ます。

本 Hack はこのパッチが公開される前に書かれたので少々複雑な手順を踏んでいますが、この方法で生成された result.txt には行単位でどれかけ時間がかかったのかも書かれているのでより詳しい調査ができる、という利点もあります。

準備

まず、+profile 機能の付いた Vim を用意する必要があります。これは Huge 版の Vim に付いている機能です。手元の Vim が Huge 版でない場合は、ソースから自分でコンパイルする必要があります。 コンパイル方法については本 Hack の範囲を超えるので省略します。

プロファイルを行う

以下のようにして vim を起動します。

vim --cmd "profile start result.txt" --cmd "profile file */plugin/*.vim" -c quit

このコマンドを実行すると、特にエラーが発生しない限り vim はすぐに終了します。そしてプロファイル結果が result.txt に出力されます。

また、ついでに自分の vimrc も確認したい、という場合は –cmd を増やせば大丈夫です。

vim --cmd "profile start result.txt" --cmd "profile file */plugin/*.vim" --cmd "profile file .vimrc" -c quit

ファイル名は適時変更してください。また、コマンドの実行タイミングにより $MYVIMRC は使えません。

結果を解析する

プロファイル結果の概要を知るために結果のファイルを加工してみます。 以下のような vim スクリプトを作成し、結果ファイルを開いてから作成したスクリプトを :source します。

let s:list = []
global/^SCRIPT/
\ call add(s:list, printf("%s\t%s",
\                         matchstr(getline(line('.')+2), '\d\+\.\d\+'),
\                         matchstr(getline('.'), 'SCRIPT\s*\zs.*$')))
new
put =reverse(sort(s:list))
1 delete _

これを実行すると新しいバッファが開かれて、そこに実行時間とスクリプトのファイル名が時間のかかった順に表示されます。 もっと細かい結果が知りたい場合はプロファイル結果を直接眺めたり別の方法で加工すると良いでしょう。 なお、今回の方法では 'runtimepath' の plugin ディレクトリ内にあるファイルのみを対象にし、各プラグインが外部の Vim スクリプトを実行している時間も含めた時間を出しました。

thinca

Comments:1

Pocket 10-02-05 (金) 2:27

Vim 7.2.320を使っているのですが、–startuptime=result.txtのように引数を与えると Garbage after option argument: “–startuptime=result.txt” のようなエラーが出ます。 ちなみに –startuptime result.txt のようにするとうまく行きます。 もし、こちらの環境の問題でしたら申し訳有りません。 環境: MacOSX 10.6.2

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://vim-users.jp/2009/11/hack99/trackback/
Listed below are links to weblogs that reference
Hack #99: 起動に時間のかかるプラグインを探す from Vim-users.jp

Home > Vim Hacks > Hack #99: 起動に時間のかかるプラグインを探す

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • プラグイン
  • vimrc
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top