summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-12-14 18:17:01 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-12-16 23:27:14 +0000
commit45f62a4a25a6db94d861685914fceb7953a753e3 (patch)
tree91129ebb6d58954b623a86724965a8908a357d34 /bitbake
parente4dc65ad46a1da2df5fc0042e24bbe8ccdd7bd90 (diff)
downloadpoky-45f62a4a25a6db94d861685914fceb7953a753e3.tar.gz
bitbake: 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. (Bitbake rev: e28ec69356f1797de3e4e3fca0fef710bc4564de) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/runqueue.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 2ba4557f9f..6da612b719 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -2268,15 +2268,16 @@ class RunQueueExecute:
2268 2268
2269 # Work out all tasks which depend upon these 2269 # Work out all tasks which depend upon these
2270 total = set() 2270 total = set()
2271 next = set()
2271 for p in toprocess: 2272 for p in toprocess:
2272 next = set(self.rqdata.runtaskentries[p].revdeps) 2273 next |= self.rqdata.runtaskentries[p].revdeps
2273 while next: 2274 while next:
2274 current = next.copy() 2275 current = next.copy()
2275 total = total | next 2276 total = total | next
2276 next = set() 2277 next = set()
2277 for ntid in current: 2278 for ntid in current:
2278 next |= self.rqdata.runtaskentries[ntid].revdeps 2279 next |= self.rqdata.runtaskentries[ntid].revdeps
2279 next.difference_update(total) 2280 next.difference_update(total)
2280 2281
2281 # Now iterate those tasks in dependency order to regenerate their taskhash/unihash 2282 # Now iterate those tasks in dependency order to regenerate their taskhash/unihash
2282 next = set() 2283 next = set()