summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Sig
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-03-21 07:16:35 (GMT)
committerSteven Knight <knight@baldmt.com>2002-03-21 07:16:35 (GMT)
commitbb8376994ade0355161d82068d420dee2ff4bec3 (patch)
tree52483cef02bf7c5e55947bf1cb6ae60dfb51b875 /src/engine/SCons/Sig
parenta9272652019c6d0cad2f20737e210f820ec9394d (diff)
downloadSCons-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/engine/SCons/Sig')
-rw-r--r--src/engine/SCons/Sig/__init__.py15
1 files changed, 8 insertions, 7 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()))