diff options
| author | Steven Knight <knight@baldmt.com> | 2002-03-21 07:16:35 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2002-03-21 07:16:35 (GMT) |
| commit | bb8376994ade0355161d82068d420dee2ff4bec3 (patch) | |
| tree | 52483cef02bf7c5e55947bf1cb6ae60dfb51b875 /src | |
| parent | a9272652019c6d0cad2f20737e210f820ec9394d (diff) | |
| download | SCons-bb8376994ade0355161d82068d420dee2ff4bec3.zip SCons-bb8376994ade0355161d82068d420dee2ff4bec3.tar.gz SCons-bb8376994ade0355161d82068d420dee2ff4bec3.tar.bz2 | |
Speed up SCons.Sig.Calculator.bsig() (second most time-consuming function) by 6%-12% by using the new Walker eval_func argument.
Diffstat (limited to 'src')
| -rw-r--r-- | src/engine/SCons/Sig/__init__.py | 15 | ||||
| -rw-r--r-- | src/engine/SCons/Taskmaster.py | 8 |
2 files changed, 12 insertions, 11 deletions
diff --git a/src/engine/SCons/Sig/__init__.py b/src/engine/SCons/Sig/__init__.py index 7e93123..3770adf 100644 --- a/src/engine/SCons/Sig/__init__.py +++ b/src/engine/SCons/Sig/__init__.py @@ -204,18 +204,19 @@ class Calculator: # derived files, because calling get_signature() on the # derived nodes will in turn call bsig() again and do that # for us. Hence: - def walk_non_derived(n, parent, myself=node): + sigs = [] + def non_derived(n, parent, myself=node): if not n.builder or n is myself: return filter(lambda x, i=myself.ignore: x not in i, n.all_children(None)) return [] - walker = SCons.Node.Walker(node, walk_non_derived) - sigs = [] - while 1: + def get_sig(n, parent, self=self, myself=node, sigs=sigs): + if not n is myself: + sigs.append(self.get_signature(n)) + walker = SCons.Node.Walker(node, non_derived, eval_func=get_sig) + child = walker.next() + while child: child = walker.next() - if child is None: break - if child is node: continue # skip the node itself - sigs.append(self.get_signature(child)) if node.builder: sigs.append(self.module.signature(node.builder_sig_adapter())) diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py index 404355e..c97d28c 100644 --- a/src/engine/SCons/Taskmaster.py +++ b/src/engine/SCons/Taskmaster.py @@ -117,11 +117,11 @@ class Task: nodes = {} for t in self.targets: def get_parents(node, parent): return node.get_parents() - walker = SCons.Node.Walker(t, get_parents) - while 1: + def set_nodes(node, parent, nodes=nodes): nodes[node] = 1 + walker = SCons.Node.Walker(t, get_parents, eval_func=set_nodes) + n = walker.next() + while n: n = walker.next() - if n == None: break - nodes[n] = 1 pending = filter(lambda x: x.get_state() == SCons.Node.pending, nodes.keys()) tasks = {} |
