Function creation slows code >10X
- To: mathgroup at smc.vnet.net
- Subject: [mg63397] Function creation slows code >10X
- From: pdickof at scf.sk.ca
- Date: Thu, 29 Dec 2005 02:57:28 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
directResult =
Union[Map[Apply[
tagTree[[##]][[1]] &, #] &, Position[
tagTree, _?(leafRuleQ[#] &)]]]; // AbsoluteTiming
takes 1.3 seconds
newLeafTags[tagTree_] :=
Union[Map[Apply[tagTree[[##]][[1]] &, #] &, Position[tagTree, \
_?(leafRuleQ[#] &)]]];
funcResult = newLeafTags[tagTree]; // AbsoluteTiming
takes 20 seconds. even though
funcResult===directResult
returns True
In another case, 8 lines which take 12 seconds as separate lines take
>500 seconds
when a function is declared with a module statement wrapped around them
even though no local variables are declared in the module.
Why is this happening and how can I avoid it???
I don't see why it should matter, but
- tagTree is a large, complicated nested rule like (eg.)
a->{b->c,d->{e->f},g->h}.
- leafRuleQ returns True for g->h and False for d->{e->f}, and
- newLeafTags returns {b,e,g} for the example