[bitbake-devel] [PATCH] bb/ui: store_dependency_information optimization

Alex Damian alex.r.damian at gmail.com
Tue Feb 18 17:42:23 UTC 2014


+1, works nice.


On Tue, Feb 18, 2014 at 2:39 PM, Marius Avram <marius.avram at intel.com>wrote:

> This optimization is in support of the bug #5485. The function called
> at the beginning of every build: store_dependency_information was taking
> approximately 20sec and it was delaying the arrival of events from the
> event queue. The change minimizes the calls to _save_a_task(),
> reducing the time to half.
>
> Signed-off-by: Marius Avram <marius.avram at intel.com>
> ---
>  bitbake/lib/bb/ui/buildinfohelper.py |   16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/bitbake/lib/bb/ui/buildinfohelper.py
> b/bitbake/lib/bb/ui/buildinfohelper.py
> index 0a8073f..da777f1 100644
> --- a/bitbake/lib/bb/ui/buildinfohelper.py
> +++ b/bitbake/lib/bb/ui/buildinfohelper.py
> @@ -605,11 +605,21 @@ class BuildInfoHelper(object):
>              task_info['task_name'] = taskname
>              task_obj = self.orm_wrapper.get_update_task_object(task_info)
>              return task_obj
> +
> +        # create tasks
> +        tasks = {}
> +        for taskdesc in event._depgraph['tdepends']:
> +            tasks[taskdesc] = _save_a_task(taskdesc)
>
> +        # create dependencies between tasks
>          for taskdesc in event._depgraph['tdepends']:
> -            target = _save_a_task(taskdesc)
> -            for taskdesc1 in event._depgraph['tdepends'][taskdesc]:
> -                dep = _save_a_task(taskdesc1)
> +            target = tasks[taskdesc]
> +            for taskdep in event._depgraph['tdepends'][taskdesc]:
> +                if taskdep not in tasks:
> +                    # Fetch tasks info is not collected previously
> +                    dep = _save_a_task(taskdep)
> +                else:
> +                    dep = tasks[taskdep]
>                  Task_Dependency.objects.get_or_create( task = target,
> depends_on = dep )
>
>      def store_build_package_information(self, event):
> --
> 1.7.9.5
>
> _______________________________________________
> bitbake-devel mailing list
> bitbake-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/bitbake-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20140218/8bd520ce/attachment-0002.html>


More information about the bitbake-devel mailing list