Feedback about the plugin:
============================================
+ written nicely (api, code, ..), with test suite ! (great)
+ works correctly (I've run maybe 2400 additional tests, 200 random runs
  for each method)
  (generating the test cases takes about 0.02 secs, running them takes
  about 6 secs (core-i5)
  (Code generating test code : http://dpaste.com/1634959/)
+ unique selling point (base conversions possible) could be emphasized in README
  This could also be of interest to other plugin writers.
- false statement ? (found in wiki):
  =========== claim:
  Given some UNIX timestamps, determine the average. This is something you can't do with Vim numbers.
  let times = [
    \ 1390938148,
    \ 1390759759,
    \ 1391028429,
    \ 1390992724,
    \ 1391100465,
    \ ]
  [...]
  ===============
  Why can't I do this with vim?
  Sample implementation (fun! Average) in benchmark below: [1 little benchmark]
  (I agree it requires float support in Vim)
  Anyway: benchmark for such use case (1000 and 10000 files), done on a core-i5:
  " 1000 numbers : 22ms
  " 10000 numbers: 221ms
  echo tlib#cmd#Time('call Test1()')
  " 1000 numbers : 0ms
  " 10000 numbers: 3ms
  echo tlib#cmd#Time('call Test2()')
Why am I asking about why it was written ?
============================================
If there are strong arguments for adding it I'd like to add it to the list of
things to improve about Vim.
Marc Weber
=== [1 little benchmark]
looks like its still quite fast
fun! Average(list)
  " vim does have float support !
  let avg = 0.0
  for i in a:list
    let avg += i
  endfor
  return avg / len(a:list)
endf
let num = 1390938148
let s:times = []
for i in range(0,10000)
  call add(s:times, num)
endfor
" cannot use it inside a function !??
let s:zero = magnum#ZERO
fun! Test1()
  call magnum#Int(2)
  let sum = s:zero
  for time in s:times
    let sum = sum.Add(magnum#Int(time))
  endfor
  let tally = magnum#Int(len(s:times))
  let s:average_1 = sum.Div(tally).Number()
endf
fun! Test2()
  let s:average_2 = split(printf('%f', round(Average(s:times))), '\.')[0]
endf
" 1000 numbers : 22ms
" 10000 numbers: 221ms
echo tlib#cmd#Time('call Test1()')
" 1000 numbers : 0ms
" 10000 numbers: 3ms
echo tlib#cmd#Time('call Test2()')
echo "expected result: ".num
echo 'magnum result '.s:average_1
echo 'float result  '.s:average_2
-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
--- 
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Tuesday, February 18, 2014
Subscribe to:
Post Comments (Atom)
 
No comments:
Post a Comment