From 9c97e5c40e48c463cebf3c72f3893fcda5eac616 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Fri, 20 Mar 2015 20:33:11 +0400 Subject: [PATCH] [locale database utility] Optimize by caching the locale lookup chain Change-Id: I1b95b3365337753ca0ab782091fa61870b77b051 Reviewed-by: Lars Knoll --- util/local_database/xpathlite.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/util/local_database/xpathlite.py b/util/local_database/xpathlite.py index 112dc14ce8..ecf1dad444 100644 --- a/util/local_database/xpathlite.py +++ b/util/local_database/xpathlite.py @@ -191,8 +191,12 @@ def findAlias(file): return False return alias_elt.attributes['source'].nodeValue +lookup_chain_cache = {} parent_locales = {} def _fixedLookupChain(dirname, name): + if lookup_chain_cache.has_key(name): + return lookup_chain_cache[name] + # see http://www.unicode.org/reports/tr35/#Parent_Locales if not parent_locales: for ns in findTagsInFile(dirname + "/../supplemental/supplementalData.xml", "parentLocales"): @@ -218,7 +222,10 @@ def _fixedLookupChain(dirname, name): items = items[:i+1] else: items = items[:i+1] + _fixedLookupChain(dirname, parent_locale) + lookup_chain_cache[name] = items return items + + lookup_chain_cache[name] = items return items def _findEntry(base, path, draft=None, attribute=None):