Hi list.

When vim allocate many objects, some times vim hang for GC. Ariya Mizutani 
suggested below's patch.

https://gist.github.com/mattn/0c58a7398c63ab4c3066

Try following test code.
----------------------------------------------
let s:hoge = {}
let s:fuga = {}
let s:arr = []

function! Prepare() abort " {{{
  let s:hoge.a1 = map(range(1, 50000), '{}')
  let s:hoge.a2 = map(range(1, 50000), '{}')
  let s:hoge.a3 = map(range(1, 50000), '{}')
  let s:hoge.fuga = s:fuga
  let s:fuga.hoge = s:hoge
endfunction " }}}

function! Release() abort " {{{
  let s:arr = s:hoge.a2
  unlet s:hoge
  unlet s:fuga
endfunction " }}}

let start = reltime()
call Prepare()
call Release()
call garbagecollect()
echomsg string(reltimestr(reltime(start)))
----------------------------------------------

Without this patch, it take 100 seconds to finish GC. And if set 100000 instead 
of 50000, vim often hangs. With this patch, it take just 0.133967 seconds. This 
patch avoid linear-search for freeing items.
I think this is awesome patch for vim because people uses many plugins recently.
I tried this patch few days. I don't see any problems.

Thanks.
- Yasuhiro Matsumoto

-- 
-- 
You received this message from the "vim_dev" 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_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui