From: Aarni Koskela Date: Mon, 4 Jan 2016 18:52:36 +0000 (+0200) Subject: dates: Memoize parsed DateTimePatterns X-Git-Tag: 2.3.1~26^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b96b1fbc49a7a0d47ec58c25cf0644282fe6201;p=thirdparty%2Fbabel.git dates: Memoize parsed DateTimePatterns --- diff --git a/babel/dates.py b/babel/dates.py index b5c670b4..20d1ab81 100644 --- a/babel/dates.py +++ b/babel/dates.py @@ -1189,6 +1189,7 @@ PATTERN_CHARS = { 'z': [1, 2, 3, 4], 'Z': [1, 2, 3, 4], 'v': [1, 4], 'V': [1, 4] # zone } +_pattern_cache = {} def parse_pattern(pattern): """Parse date, time, and datetime format patterns. @@ -1214,6 +1215,9 @@ def parse_pattern(pattern): if type(pattern) is DateTimePattern: return pattern + if pattern in _pattern_cache: + return _pattern_cache[pattern] + result = [] for tok_type, tok_value in tokenize_pattern(pattern): @@ -1229,7 +1233,8 @@ def parse_pattern(pattern): else: raise NotImplementedError("Unknown token type: %s" % tok_type) - return DateTimePattern(pattern, u''.join(result)) + _pattern_cache[pattern] = pat = DateTimePattern(pattern, u''.join(result)) + return pat def tokenize_pattern(pattern):