Re: Cost of Composition vs Pure Function
- To: mathgroup at smc.vnet.net
- Subject: [mg93665] Re: Cost of Composition vs Pure Function
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Fri, 21 Nov 2008 05:32:23 -0500 (EST)
On 11/20/08 at 4:56 AM, raffy at mac.com (Raffy) wrote: >The speed difference between these two evaluations seems odd, >considering they are effectively the same thing: >m = RandomReal[{0, 1}, {10, 1000, 1000}]; >Total[Total[#]]& /@ m; // Timing => 0.14 sec >Composition[Total, Total] /@ m; // Timing => 0.983 sec >Other than the Identity and Inverse Function transformation, where >is this overhead coming from? I don't why there is an overhead associated with Compositon. But, there clearly is an overhead used when mapping a function to elements. Note In[1]:= m = RandomReal[{0, 1}, {10, 1000, 1000}]; In[2]:= (x = Total[Total[#]] & /@ m); // Timing Out[2]= {0.836466,Null} In[3]:= (y = Total[m, {2, 3}]); // Timing Out[3]= {0.207775,Null} In[4]:= x == y Out[4]= True That is you can get the same result more efficiently by using the second argument to Total and avoid the overhead associated with Map.