diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-12-14 18:17:01 +0000 |
---|---|---|
committer | Armin Kuster <akuster808@gmail.com> | 2019-12-17 22:14:47 -0800 |
commit | 57df7f191755dd887827d51b125d246c1af3e1b6 (patch) | |
tree | bddc4e81eb14534191f55ced20531bb133a0f4f6 | |
parent | a80024a4397485f96693c4df108b40f6b1bdf32b (diff) | |
download | bitbake-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.py | 17 |
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() |