diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2009-07-23 17:58:56 +0100 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2009-07-23 17:58:56 +0100 |
commit | d715da0ab6fecb85d1bd4722dbc315a6ec079599 (patch) | |
tree | 0961563f90372b9e02fa696484e462afe8251e86 /classes | |
parent | bbe3ee4b62b887f408ef7e43ebc1b7b54a238f9a (diff) | |
download | bitbake-contrib-d715da0ab6fecb85d1bd4722dbc315a6ec079599.tar.gz |
runqueue: Improve recursive task dependency calculation speed (from Poky)
At present there is a bottleneck in runqueue in the
get_recursive_tdepends() function which bothers me as we never used to
have it. It appeared when we fixed some correctness issues with the
dependency tree and the code in this area has grown adhoc for too long.
As an example the above function was getting called 500,000 times in my
main test case of building an image. Its particularly problematic in
builds with many recursive dependencies such as 'bitbake world'.
This commit rewrites the problematic function entirely with the
following benefits:
* Replaces the most illegible code in that function with code thats
easier to understand
* Builds the dependency tree per filename, not per task since we don't
need it per task which is a performance win
* Improves the documentation in places
* Much faster execution
* Reuses the main dependency tree data, doesn't make its own.
The code functions very differently to the original. Previously the
recursive dependency tree and the main dependency tree were separate. In
this implementation we use the main tree to build the recursive tree
after the main tree has been completed, then inject the dependencies.
Compared with the original this actually inserts small numbers (4 in my
test cases) of additional dependencies into the task graph such as
image_recipe:do_rootfs -> image_recipe:do_package_write_ipk which is
arguably an bug in the existing implementation. I've checked into this,
understand why its happening and believe none of the additional
dependencies should cause any complications.
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'classes')
0 files changed, 0 insertions, 0 deletions