sre_compile does bit test (e.g. `flags & SRE_FLAG_IGNORECASE`) in loop.
`IntFlag.__and__` and `IntFlag.__new__` made it slower.
So this commit convert it to normal int before passing flags to `sre_compile()`.
Compiled regular expression objects with the re.LOCALE flag no longer
depend on the locale at compile time. Only the locale at matching
time affects the result of matching.
"issue28082: use IntFlag for re constants" by Ethan Furman.
The re module is not more used in the site module and so adding "import enum"
to re.py doesn't impact python_startup benchmark anymore.
Importing the enum module in the re module slows down Python startup by 34%
when Python is run from a virtual environment, or more generally when the re
module is imported at startup but not the enum module.
Now the _collections is statically built, the build dependencies are in proper
order and build works fine.
Commit Log from r83874:
Issue 9396. Apply functools.lru_cache in the place of the
random flushing cache in the re module.
The problem is that the re module is imported by sysconfig
and re needs functools which uses collections.OrderedDict()
but the _collectionsmodule.c code is not yet constructed
at this point in the build.
The likely best solution will be to include _collections
as part of the static build before the rest of the
boot-strapping.
been increased from 100 to 500 and the cache replacement policy has changed
from simply clearing the entire cache on overflow to randomly forgetting 20%
of the existing cached compiled regular expressions. This is a performance
win for applications that use a lot of regular expressions and limits the
impact of the performance hit anytime the cache is exceeded.
svn+ssh://pythondev@svn.python.org/python/trunk
........
r70090 | gregory.p.smith | 2009-03-01 21:13:57 -0800 (Sun, 01 Mar 2009) | 3 lines
Adds an optional flags argument to re.split, re.sub and re.subn to be
consistent with the other re module functions.
........