bpo-37723: Fix performance regression on regular expression parsing. (GH-15030)

Improve performance of sre_parse._uniq function.
This commit is contained in:
yannvgn 2019-07-31 20:50:39 +02:00 committed by Serhiy Storchaka
parent 1b29af83bc
commit 9f55551f3d
3 changed files with 4 additions and 7 deletions

View file

@ -430,13 +430,7 @@ def _escape(source, escape, state):
raise source.error("bad escape %s" % escape, len(escape))
def _uniq(items):
if len(set(items)) == len(items):
return items
newitems = []
for item in items:
if item not in newitems:
newitems.append(item)
return newitems
return list(dict.fromkeys(items))
def _parse_sub(source, state, verbose, nested):
# parse an alternation: a|b|c

View file

@ -1708,6 +1708,7 @@ Michael Urman
Hector Urtubia
Lukas Vacek
Ville Vainio
Yann Vaginay
Andi Vajda
Case Van Horsen
John Mark Vandenberg

View file

@ -0,0 +1,2 @@
Fix performance regression on regular expression parsing with huge
character sets. Patch by Yann Vaginay.