This is an automated email from the git hooks/post-receive script.
pierov pushed a commit to branch tor-browser-102.2.0esr-12.0-1 in repository tor-browser.
commit 5b2984d90280946f4a681dc84be2eadbe4caccdf Author: Mike Hommey mh+mozilla@glandium.org AuthorDate: Wed Jun 8 08:49:06 2022 +0000
Bug 1773222 - Speed up gn config filtering. r=firefox-build-system-reviewers,andi a=pascalc
This brings down the operation from 12s to 8ms on my machine. Yes, that's seconds versus milliseconds.
Differential Revision: https://phabricator.services.mozilla.com/D148624 --- python/mozbuild/mozbuild/gn_processor.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/python/mozbuild/mozbuild/gn_processor.py b/python/mozbuild/mozbuild/gn_processor.py index 4ad07035eb092..6e3f2146b97ac 100644 --- a/python/mozbuild/mozbuild/gn_processor.py +++ b/python/mozbuild/mozbuild/gn_processor.py @@ -4,7 +4,7 @@
from __future__ import absolute_import, print_function, unicode_literals
-from collections import defaultdict +from collections import defaultdict, deque from copy import deepcopy import glob import json @@ -141,10 +141,14 @@ class MozbuildWriter(object):
def find_deps(all_targets, target): - all_deps = set([target]) - for dep in all_targets[target]["deps"]: - if dep not in all_deps: - all_deps |= find_deps(all_targets, dep) + all_deps = set() + queue = deque([target]) + while queue: + item = queue.popleft() + all_deps.add(item) + for dep in all_targets[item]["deps"]: + if dep not in all_deps: + queue.append(dep) return all_deps