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

View File

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

View File

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