From e65c64dab0720efc1fbc0462fc6ace75dcc6847d Mon Sep 17 00:00:00 2001 From: gaspar Date: Mon, 12 Mar 2018 18:41:24 +0200 Subject: [PATCH] Cache 'redbaron_classname_to_baron_type', giving ~30% performance boost on 'find_all' heavy code. --- redbaron/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/redbaron/utils.py b/redbaron/utils.py index 451675b5..5d816bb1 100644 --- a/redbaron/utils.py +++ b/redbaron/utils.py @@ -19,7 +19,8 @@ def baron_type_to_redbaron_classname(baron_type): return "".join(map(lambda x: x.capitalize(), baron_type.split("_"))) + "Node" - +from functools import lru_cache +@lru_cache(maxsize=None) def redbaron_classname_to_baron_type(name): name = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name.replace("Node", "")) return re.sub('([a-z0-9])([A-Z])', r'\1_\2', name).lower()