├── README.mkd └── plugin └── benchvimrc.vim /README.mkd: -------------------------------------------------------------------------------- 1 | benchvimrc-vim 2 | ============== 3 | 4 | Introduction 5 | ------------ 6 | 7 | make benchmark result of your vimrc. 8 | 9 | Installation 10 | ------------ 11 | 12 | cd ~/.vim/bundle # or make directory 13 | git clone http://github.com/mattn/benchvimrc-vim.git 14 | 15 | 16 | Usage 17 | ----- 18 | 19 | :BenchVimrc 20 | 21 | Author 22 | ------ 23 | 24 | Yasuhiro Matsumoto 25 | -------------------------------------------------------------------------------- /plugin/benchvimrc.vim: -------------------------------------------------------------------------------- 1 | function! s:add_point(s, l) 2 | if a:s =~ '^\s*\w' && a:s !~ '^\s*\(en\|if\|el\)' 3 | let r = join([ 4 | \ printf('let [g:bvimrc_t[g:bvimrc_c], g:bvimrc_s, g:bvimrc_c] = [reltimestr(reltime(g:bvimrc_s)),reltime(), %d]', a:l), 5 | \], '|') . "\n" . a:s 6 | else 7 | let r = a:s 8 | endif 9 | return r 10 | endfunction 11 | 12 | function! s:detect_vimrc() 13 | if has('win32') || has('win64') 14 | let vimrc = filereadable($MYVIMRC) ? $MYVIMRC : fnamemodify(expand('~/_vimrc'), ':p') 15 | if filereadable(vimrc) 16 | return vimrc 17 | endif 18 | endif 19 | return fnamemodify(expand('~/.vimrc'), ':p') 20 | endfunction 21 | 22 | function! s:benchvimrc(...) 23 | let vimrc = a:0 == 0 ? s:detect_vimrc() : a:1 24 | let g:bvimrc_l = readfile(vimrc, 1) 25 | call add(g:bvimrc_l, "echo ''") 26 | let tmp = tempname() 27 | try 28 | let l = map(range(len(g:bvimrc_l)), 's:add_point(g:bvimrc_l[v:val], v:val+1)') 29 | call writefile(split(join(l, "\n"), "\n", 1), tmp, 1) 30 | let g:bvimrc_t = {} 31 | let g:bvimrc_s = reltime() 32 | let g:bvimrc_c = 0 33 | exe 'so' tmp 34 | let l = map(range(1, len(g:bvimrc_l)-1), 35 | \ 'printf("%s %05d: %s", has_key(g:bvimrc_t, v:val) ? g:bvimrc_t[v:val] : " ", v:val, g:bvimrc_l[v:val-1])' 36 | \) 37 | call writefile(l, tmp, 1) 38 | exe 'so' vimrc 39 | unlet g:bvimrc_c 40 | unlet g:bvimrc_l 41 | unlet g:bvimrc_t 42 | unlet g:bvimrc_s 43 | silent exe "split" tmp 44 | silent file __BENCHVIMRC__ 45 | setlocal buftype=nofile filetype=vim 46 | silent! %foldopen 47 | finally 48 | call delete(tmp) 49 | endtry 50 | endfunction 51 | 52 | command! -nargs=? -complete=file BenchVimrc call s:benchvimrc() 53 | --------------------------------------------------------------------------------