From 0e930efd95d6077e9cdaf32726dc64fe3e427910 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Sat, 15 Jul 2017 01:30:35 +0200 Subject: [PATCH] Cache SafeRe patterns --- src/util/SafeRe.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/util/SafeRe.py b/src/util/SafeRe.py index d5ddf3b6..4c104f4f 100644 --- a/src/util/SafeRe.py +++ b/src/util/SafeRe.py @@ -4,6 +4,8 @@ import re class UnsafePatternError(Exception): pass +cached_patterns = {} + def isSafePattern(pattern): if len(pattern) > 255: @@ -16,5 +18,10 @@ def isSafePattern(pattern): def match(pattern, *args, **kwargs): - if isSafePattern(pattern): - return re.match(pattern, *args, **kwargs) + cached_pattern = cached_patterns.get(pattern) + if cached_pattern: + return cached_pattern.match(*args, **kwargs) + else: + if isSafePattern(pattern): + cached_patterns[pattern] = re.compile(pattern) + return cached_patterns[pattern].match(*args, **kwargs)