Speed (resumed)

• To: mathgroup at smc.vnet.net
• Subject: [mg15732] Speed (resumed)
• From: tobiasoed at my-dejanews.com
• Date: Fri, 5 Feb 1999 03:42:26 -0500 (EST)
• Organization: Deja News - The Leader in Internet Discussion
• Sender: owner-wri-mathgroup at wolfram.com

```Hi all, continuing on the speed of evaluation started in another thread
about the difference between Do and Nest, I was wondering what you
thought about the difference in evaluation time between pure functions
written as

(something depending on #i) & and
Function[{vars},samething depending on vars]

In[1]:= Timing[x=0.3;Print[x];Nest[# 1.003456 &,x,1000000]] 0.3

Out[1]=
{56.8977 Second, 6.47467520 10*^1497}

In[2]:= Timing[x=0.3;Print[x];Nest[Function[{y},y 1.003456],x,1000000]]
0.3

Out[2]=
{79.2468 Second, 6.47467520 10*^1497}

Using the Function notation increases the evaluation time by 40 %. I
kind of understand this since in the Function case there has to be a
replacement between the formal parameters and the arguments to be made
which is not as streight forward as a replacement of #i by the
arguments. On the other hand, I do not get at all the difference in
evaluation time between

Map[f,expr] and f /@ expr

In[3]:= Timing[Map[(#*2)&,Table[i,{i,10000}]]][[1]]

Out[3]= 1.63 Second

In[4]:= Timing[(#*2)& /@ Table[i,{i,10000}]][[1]]

Out[4]= 1.55 Second

10 times more

In[5]:= Timing[Map[(#*2)&,Table[i,{i,100000}]]][[1]]

Out[5]= 16.31 Second

In[6]:= Timing[(#*2)& /@ Table[i,{i,100000}]][[1]]

Out[7]= 15.44 Second

I expected that Map[] would be slower by a constant amount of time used
for the translation to the other form but no it's more or less
linear...

I'd like to know if anyone knew other tricks that reduce computation
time just by changing the notation ?

Tobias

-----------== Posted via Deja News, The Discussion Network ==----------