NeoBundleのキャッシュ機能を利用したVimの起動を高速化する設定法まとめ
Vimのプラグインを管理するためのプラグイン、NeoBundleには、Version 3.0からプラグインをキャッシュする機能が追加された。
>> (https://github.com/Shougo/neobundle.vim/commit/fc8818ccbc2db471f4de3501a69c66d3bb798df0)
この機能を利用することで、プラグインを大量にインストールしたVimでも、高速に起動することが可能になる。
本記事では、NeoBundleのキャッシュ機能の設定方法について述べる。
また、Vimの起動がどの程度高速化するのか、実際に起動速度を測定し、検証した結果も述べる。
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
※2015.5.12追記
NeoBundleのキャッシュ機能に関して、仕様が変更された。
(詳細: https://github.com/Shougo/neobundle.vim/commit/69cb3b2d3c159207e1a2620c51b6fe754289c841)
以下、仕様変更の内容を一部抜粋する。
- 関数: neobundle#has_cache(), neobundle#has_fresh_cache()を廃止
- コマンド: NeoBundleLoadCacheを廃止
- 上記の関数/コマンドの代わりに、neobundle#load_cacheを追加
以上の項目は、本記事の内容にも影響を及ぼす。
よって、最新の仕様に合わせて、本記事の一部を修正した。
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
環境
- Vim (7.4.473)
- NeoBundle (3.0)
設定方法
設定は、NeoBundleのキャッシュ機能を有効にする記述を、.vimrcに書込むだけである。
具体的には、.vimrcの適切な箇所に、以下の内容を記述する。
(Vimプラグインは、"$HOME/.vim/bundle"以下に格納されているものとする。)
if has('vim_starting') set nocompatible set runtimepath+=expand('$HOME/.vim/bundle/neobundle.vim') endif call neobundle#begin(expand('$HOME/.vim/bundle')) call neobundle#load_cache " キャッシュの読込み " 以下、インストールするプラグインの指定 " NeoBundle自身 NeoBundleFetch 'Shougo/neobundle.vim' " その他のプラグイン NeoBundle 'hoge/piyo.vim' (中略) NeoBundle 'foo/bar.vim' " ここまで、インストールするプラグインの指定 NeoBundleSaveCache " キャッシュの書込み call neobundle#end() filetype plugin indent on
利用方法
上記の設定を書込んだ後、初回の起動時にキャッシュの作成がおこなわれる。
次回以降の起動から、キャッシュを利用した高速起動が実行される。
キャッシュを明示的に作成したい場合は、:NeoBundleSaveCacheを実行する。
また、作成したキャッシュを削除したい場合は、:NeoBundleClearCacheを実行すれば良い。
キャッシュファイルのデフォルトの作成場所は、.neobundle/cacheである。
作成場所を変更したい場合は、"let g:neobundle#cache_file = '/path/to/cache_file'"を追記する。
検証
Vimの起動時間がどの程度短縮されたのかを調べるために、実際に検証をおこなった。
検証は、実機マシン上で、Vimの--startuptimeオプションを用いておこなった。
検証に使用したマシン環境は、以下の2つである。
マシン1:Lenovo Thinkpad X121e
- CPU:AMD E-450 (2 core 2 thread, 1.65GHz)
- メモリ:8GB (DDR3-1333)
- ストレージ:SSD 256GB (CFD_CSSD-S6TM256NMPQ)
- OS:Arch Linux (x86_64, Kernel 3.14.23-1-lts)
マシン2:Dell OptiPlex 9020
- CPU:Intel Core i7-4770 (4 core 8 thread, 3.40GHz)
- メモリ:8GB (DDR3-1600)
- ストレージ:500GB (ATA ST500DM002-1BD14)
- OS:Windows 7 Professional (amd64, SP1) && Cygwin (x86_64, Cygwin DLL:1.7.33)
両マシンとも、同一の.vimrcを用いて計測をおこなった。
使用した.vimrcは、行数:2948(実効行数:980)、使用プラグイン数:120である。
検証結果
マシン1
$ vim -c 'NeoBundleClearCache | q' # キャッシュのクリア
$ vim --startuptime /tmp/cache_test -c q && tail -n 1 /tmp/cache_test | awk '{print $1}'
764.863
$ !-2:s/Clear/Save # キャッシュの有効化
$ !-2
561.097
マシン2
マシン1では、キャッシュ無: 764.863(msec)、キャッシュ有: 561.097(msec)、
$ vim -c 'NeoBundleClearCache | q' # キャッシュのクリア
$ vim --startuptime /tmp/cache_test -c q && tail -n 1 /tmp/cache_test | awk '{print $1}'
6540.807
$ !-2:s/Clear/Save # キャッシュの有効化
$ !-2
5260.234
マシン2では、キャッシュ無:6540.807(msec)、キャッシュ有:5260.234(msec)、という起動速度であることが判明した。
つまり、NeoBundleのキャッシュ機能を有効にすることで、マシン1では約200msec、マシン2では約1280msec、起動時間が短縮された。
以上の結果より、NeoBundleのキャッシュ機能によって、Vimの起動を2割程度、高速化できることを確認した。
参考にしたもの
- :help neobundle
- Vim - NeoBundle のキャッシュ機能 - Qiita
http://qiita.com/hokorobi/items/0663da130f54bac3ce1a - Big Sky :: vimmer必読!読み込みの遅いvimscriptを見つけ出す方法
http://mattn.kaoriya.net/software/vim/20091104214557.htm