> Mikołaj Machowski wrote:
> >> I have all book on gvim but no one tells me the best practice to have
> >> good performance when we write vimscript.
> >
> > 1. In regexps avoid when possible * wildcard.
>
> I've never had problems with this, but it may affect long lines.
Simple test on big file - trimming whitespaces from end of line:
%s/\s*$//
%s/\s\+$//
Basically this is special case of my second tip - * matches everywhere,
\+ tests if action is necessary.
> Unless your test is something simple instead of a regep, the regex
> engine ends up parsing the line twice, the first time for the test and
> the second time for the substitute. So if you can make a quick
> non-regex determination on the line like
>
> if (line[0] == 'a')
> s/complexregex/replacement/
> endif
>
> it will be faster. But checking for regex containment like
>
> if line=~'complexregex'
> s/complexregex/replacement/
> endif
>
> will just be slower.
True (and I thought obvious) but '=~' or stridx() works my way even with
long strings or simple regexps (without * ;). IMO usually worth to try.
This is other way of
:g/simpleregexp/s/complexregexp/replacement/
instead of
:%s/complexregexp/replacement/
Sad truth about such optimizations is that they often take more time to
implement than actual savings during execution :D
m.
----------------------------------------------------
Wygraj nagrody za kupowanie prezentów - zobacz:
http://klik.wp.pl/?adr=http%3A%2F%2Fcorto.www.wp.pl%2Fas%2Ftaniokonkurs.html&sid=935
--
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
No comments:
Post a Comment