vimproc.vim に vimproc#cmd#system が実装された
さて、先日書いた Windows で system の高速化なのですが、これが vimproc.vim に取り込まれました。
この機能を使用したい場合は vimproc#system ではなくて vimproc#cmd#system を使用する必要があります。
とりあえず、簡単に速度を比較してみました。
[コード]
function! s:test2(num, cmd) echo "system()" TimerStart for i in range(a:num) call system(a:cmd) endfor TimerEnd endfunction function! s:test3(num, cmd) echo "vimproc#system()" TimerStart for i in range(a:num) call vimproc#system(a:cmd) endfor TimerEnd endfunction function! s:test4(num, cmd) echo "vimproc#cmd#system()" TimerStart for i in range(a:num) call vimproc#cmd#system(a:cmd) endfor TimerEnd endfunction function! Test(...) let cmd = get(a:, 1, "ls") let num = get(a:, 2, 10) echo "------------------" echo "== '" . cmd . "' x " . num . " ==" call s:test2(num, cmd) call s:test3(num, cmd) call s:test4(num, cmd) echo "" endfunction call Test("dir", 5) call Test("path", 5) call Test("echo %date%", 5) call Test("attrib main.vim", 5) call Test("ls", 5)
[出力]
------------------ == 'dir' x 5 == system() 0.506900 vimproc#system() 0.302018 vimproc#cmd#system() 0.085936 ------------------ == 'path' x 5 == system() 0.451788 vimproc#system() 0.296782 vimproc#cmd#system() 0.013453 ------------------ == 'echo %date%' x 5 == system() 0.454580 vimproc#system() 0.297416 vimproc#cmd#system() 0.010579 ------------------ == 'attrib main.vim' x 5 == system() 0.653860 vimproc#system() 0.752728 vimproc#cmd#system() 0.199233 ------------------ == 'ls' x 5 == system() 0.641182 vimproc#system() 1.682257 vimproc#cmd#system() 0.129654
こんな感じで処理速度が早くなっていますね。
気になる方は試してみるといいと思います。