[bitbake-devel] [PATCH 5/5] runqueue: Optimise task migration code slightly
Richard Purdie
richard.purdie at linuxfoundation.org
Sun Dec 15 09:41:12 UTC 2019
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 at linuxfoundation.org>
---
lib/bb/runqueue.py | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 2ba4557f9f..6da612b719 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()
--
2.20.1
More information about the bitbake-devel
mailing list