From: Richard Purdie Date: Mon, 16 Sep 2013 07:33:48 +0000 (+0000) Subject: data: Use direct iteration, not keys() X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e63448d9ee331b0f45fb9a0197d0dbee49eb2fa0;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git data: Use direct iteration, not keys() Profiling shows the creation of keys() has overhead and we're better using an iterator rather than the memory associated with the huge list of keys when iterating the whoe datastore. We minimise the number of times we do this to twice only per recipe. Signed-off-by: Richard Purdie --- diff --git a/lib/bb/data.py b/lib/bb/data.py index e6d523210c8..beaf089601f 100644 --- a/lib/bb/data.py +++ b/lib/bb/data.py @@ -148,7 +148,7 @@ def expandKeys(alterdata, readdata = None): readdata = alterdata todolist = {} - for key in keys(alterdata): + for key in alterdata: if not '${' in key: continue @@ -341,7 +341,7 @@ def build_dependencies(key, keys, shelldeps, vardepvals, d): def generate_dependencies(d): - keys = set(key for key in d.keys() if not key.startswith("__")) + keys = set(key for key in d if not key.startswith("__")) shelldeps = set(key for key in keys if d.getVarFlag(key, "export") and not d.getVarFlag(key, "unexport")) vardepvals = set(key for key in keys if d.getVarFlag(key, "vardepvalue"))