Le mardi 13 février 2018 14:30:38 UTC+1, Luc Hermitte a écrit : > Hello Nicholas, > > > After reading a file and getting 1 million lines' List, I need to > > make similar substitutions over matched lines ~500 times with this > > func: > > > > > > fun! foo#set_new_val(ressource) abort "{{{ > > > > " position > > let pos = foo#getpos_ress(a:ressource) > > let pres = foo#geth_presence(a:ressource) > > let s:xml[pos] = substitute(s:xml[pos],'false\|true',pres,"") <<< > > HERE > > > > " Slave/Voie01 to Voie08 > > for idx in [1,2,3,4,5,6,7,8] <<< HERE > > let pos = foo#getpos_ress(a:ressource.'/bar0'.string(idx)) > > let s:xml[pos] = substitute(s:xml[pos],'false\|true',pres,"") <<< > > HERE > > endfor > > > > endfu"}}} > > > > > > 1/ Can I optimize this function ? > > So far my experiments on the subject taught me that we are best avoiding :for > and :while constructs when performances matter. > If you can use map() instead, do! > > HTH, > > -- > Luc Hermitte
Yess Luc ! I finally reached to the same conclusion. 1/ But mapping Dict or List, inside the substitute func is needed no ? 2/ Other point, passing by register with emmbedded pattern is it faster ? let @a = '\w\+\(<\/PRES\)' let @b = pres.'\1' call map(voies_no, 'substitute(s:xml[v:val],"\=@a","\=@b","")') Thanks you -- -- 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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.