Closed Bug 1558931 Opened 5 years ago Closed 5 years ago

Improve performance of moz.build Schedules __or__

Categories

(Firefox Build System :: Task Configuration, task)

task
Not set
normal

Tracking

(firefox69 fixed)

RESOLVED FIXED
mozilla69
Tracking Status
firefox69 --- fixed

People

(Reporter: bc, Assigned: bc)

References

Details

Attachments

(1 file)

When I landed the patch from Bug 1522113 it broke the file-info bugzilla-automation since it increased the run time to over 2700 seconds. I've been looking into this and have found that the problem is with Files __iadd__

                self['SCHEDULES'] = self['SCHEDULES'] | v

This calls Schedules __or__

        rv = Schedules()

which creates a new instance of Schedules each time initializing the two properties every time even though they are not used

        self._inclusive = TypedList(Enum(*schedules.INCLUSIVE_COMPONENTS))()
        self._exclusive = ImmutableStrictOrderingOnAppendList(schedules.EXCLUSIVE_COMPONENTS)

You can see the current behavior with the base try push. The bugzilla job takes 33 minutes.

Using the moz.build changes from bug 1522113 we can see the bugzilla bustage.

However a very simple change to allow the Schedules constructor to take optional arguments for inclusive and exclusive improves the speed greatly and allows the bugzilla job with the moz.build changes to complete in only 12 minutes.

Pushed by bclary@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/4f05b6e71fb2 Improve performance of moz.build Schedules __or__, r=dustin.
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla69
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: