On Thu, Sep 26, 2019 at 05:34:49PM +0200, Ján Tomko wrote:
On Thu, Sep 26, 2019 at 02:16:04PM +0100, Daniel P. Berrangé wrote:
> On Thu, Sep 26, 2019 at 12:39:39PM +0200, Erik Skultety wrote:
> > On Tue, Sep 24, 2019 at 03:58:44PM +0100, Daniel P. Berrangé wrote:
> > question 1) what's the benefit of compiling a regex and using it only once?
Btw
> > python does cache every pattern passed to re.match (and friends) so
compilation
> > IMO hardly ever makes sense unless you're doing 1000s of searches for the
same
Some of the scripts here are run on the whole libvirt codebase so that
is the case here. For example just removing the pre-compilation of
regexes for comments from the spacing check script bumped the execution
time from 6.5s to 7.4s
Sadly, the one script where pre-compilation matters the most is the one
where separating them puts them far away from the usage to not fit on
one screen.
I could do a little custom function that caches all regexes
recache = {}
def research(regex, line):
global recache
if regex not in recache:
recache[regex] = re.compile(regex)
return recache[regex].search(line)
then the loop we can do a normal
research(r'''some regex''', line)
so we can get readability and full caching together. Probably not worth
repeating this trick for every script, but certainly the whitespace
script and a few others probably benefit.
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|