aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb/runqueue.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-08-16 13:58:10 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-08-21 15:30:08 +0100
commit28b3f0d8867804799420689c314ac4a8f01efb8c (patch)
treeed47b416a948aba2cfef04d00a41ead75d5b3c80 /lib/bb/runqueue.py
parent02090b3456b7a2de12e72dfeaabfd3b631609924 (diff)
downloadbitbake-28b3f0d8867804799420689c314ac4a8f01efb8c.tar.gz
runqueue: Optimise build_taskdepdata slightly
Rather than repeatedly calling mc_from_tid() do this in the parent, removing around a million function calls. Takes time spent in this function from 40s to 36s. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/runqueue.py')
-rw-r--r--lib/bb/runqueue.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index a98ccddd0..4f69578e4 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -2160,12 +2160,11 @@ class RunQueueExecute:
return True
- def filtermcdeps(self, task, deps):
+ def filtermcdeps(self, task, mc, deps):
ret = set()
- mainmc = mc_from_tid(task)
for dep in deps:
- mc = mc_from_tid(dep)
- if mc != mainmc:
+ thismc = mc_from_tid(dep)
+ if thismc != mc:
continue
ret.add(dep)
return ret
@@ -2174,9 +2173,10 @@ class RunQueueExecute:
# as most code can't handle them
def build_taskdepdata(self, task):
taskdepdata = {}
+ mc = mc_from_tid(task)
next = self.rqdata.runtaskentries[task].depends.copy()
next.add(task)
- next = self.filtermcdeps(task, next)
+ next = self.filtermcdeps(task, mc, next)
while next:
additional = []
for revdep in next:
@@ -2186,7 +2186,7 @@ class RunQueueExecute:
provides = self.rqdata.dataCaches[mc].fn_provides[taskfn]
taskhash = self.rqdata.runtaskentries[revdep].hash
unihash = self.rqdata.runtaskentries[revdep].unihash
- deps = self.filtermcdeps(task, deps)
+ deps = self.filtermcdeps(task, mc, deps)
taskdepdata[revdep] = [pn, taskname, fn, deps, provides, taskhash, unihash]
for revdep2 in deps:
if revdep2 not in taskdepdata: