Skip to content

Instantly share code, notes, and snippets.

@lambdalisue
Created November 12, 2018 15:01
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save lambdalisue/189b2962e2689dbbfcd12310cd012967 to your computer and use it in GitHub Desktop.
loop test vim
let s:n = 10000
let s:data = repeat(["Hello World\r"], s:n)
let s:expect = repeat(['Hello World'], s:n)
function! s:validate(data) abort
for i in range(len(s:expect))
if a:data[i] !=# s:expect[i]
echoerr printf('%d: %s != %s', i, a:data[i], s:expect[i])
endif
endfor
endfunction
function! s:test1() abort
let data = deepcopy(s:data)
let start = reltime()
call map(data, 'substitute(v:val, ''\r$'', '''', '''')')
echo reltimestr(reltime(start))
call s:validate(data)
endfunction
function! s:test2() abort
let data = deepcopy(s:data)
let start = reltime()
call map(data, 'matchstr(v:val, ''.\{-}\ze\r\?$'')')
echo reltimestr(reltime(start))
call s:validate(data)
endfunction
function! s:test3() abort
let data = deepcopy(s:data)
let start = reltime()
call map(data, 'v:val[-1:] ==# "\r" ? v:val[:-2] : v:val')
echo reltimestr(reltime(start))
call s:validate(data)
endfunction
function! s:test4() abort
let data = deepcopy(s:data)
let start = reltime()
let results = []
for v in data
call add(results, v[-1:] ==# "\r" ? v[:-2] : v)
endfor
echo reltimestr(reltime(start))
call s:validate(results)
endfunction
call s:test1()
call s:test2()
call s:test3()
call s:test4()
@lambdalisue
Copy link
Author


  0.021566
  0.036206
  0.009633
  0.021906
*** time: 0.247651 ***

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment