aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-12-14 18:17:01 +0000
committerArmin Kuster <akuster808@gmail.com>2019-12-17 22:14:47 -0800
commit57df7f191755dd887827d51b125d246c1af3e1b6 (patch)
treebddc4e81eb14534191f55ced20531bb133a0f4f6
parenta80024a4397485f96693c4df108b40f6b1bdf32b (diff)
downloadbitbake-contrib-57df7f191755dd887827d51b125d246c1af3e1b6.tar.gz
runqueue: Optimise task migration code slightly
Move the calls to difference_update out a code level which improves efficiency significantly. Also further combine the outer loop for efficiency too. These two changes remove a bottleneck from the performance charts. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit e28ec69356f1797de3e4e3fca0fef710bc4564de)
-rw-r--r--lib/bb/runqueue.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 2ba4557f9..6da612b71 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -2268,15 +2268,16 @@ class RunQueueExecute:
# Work out all tasks which depend upon these
total = set()
+ next = set()
for p in toprocess:
- next = set(self.rqdata.runtaskentries[p].revdeps)
- while next:
- current = next.copy()
- total = total | next
- next = set()
- for ntid in current:
- next |= self.rqdata.runtaskentries[ntid].revdeps
- next.difference_update(total)
+ next |= self.rqdata.runtaskentries[p].revdeps
+ while next:
+ current = next.copy()
+ total = total | next
+ next = set()
+ for ntid in current:
+ next |= self.rqdata.runtaskentries[ntid].revdeps
+ next.difference_update(total)
# Now iterate those tasks in dependency order to regenerate their taskhash/unihash
next = set()