From 816acb6ee8ca8ac8791bf89c32aa45f808d5d52f Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 29 May 2015 10:33:04 +0000 Subject: bitbake: data_smart: Cache set(self.overrides) This performs better than continually regeneratiing the set(). Also only use set comparisions when its necessary to save some overhead as issubset() is slower in the single item case. (Bitbake rev: db9a4eedcf78969ec50bf0e4a8defba8ff0daa4a) Signed-off-by: Richard Purdie --- bitbake/lib/bb/data_smart.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'bitbake/lib/bb/data_smart.py') diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index c91b51f686..941c158f7d 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py @@ -369,7 +369,9 @@ class DataSmart(MutableMapping): self.inoverride = True # Can end up here recursively so setup dummy values self.overrides = [] + self.overridesset = set() self.overrides = (self.getVar("OVERRIDES", True) or "").split(":") or [] + self.overridesset = set(self.overrides) self.inoverride = False self.expand_cache = {} @@ -450,10 +452,10 @@ class DataSmart(MutableMapping): active = [] self.need_overrides() for (r, o) in self.overridedata[var]: - if o in self.overrides: + if o in self.overridesset: active.append(r) elif "_" in o: - if set(o.split("_")).issubset(set(self.overrides)): + if set(o.split("_")).issubset(self.overridesset): active.append(r) for a in active: self.delVar(a) @@ -600,10 +602,12 @@ class DataSmart(MutableMapping): self.need_overrides() for (r, o) in self.overridedata[var]: # What about double overrides both with "_" in the name? - if o in self.overrides: - active[o] = r - elif set(o.split("_")).issubset(set(self.overrides)): + if o in self.overridesset: active[o] = r + elif "_" in o: + if set(o.split("_")).issubset(self.overridesset): + active[o] = r + mod = True while mod: mod = False -- cgit v1.2.3-54-g00ecf