2 Parts is faster than 1...
- To: mathgroup at smc.vnet.net
- Subject: [mg33512] 2 Parts is faster than 1...
- From: Chris Johnson <cjohnson at shell.faradic.net>
- Date: Sun, 24 Mar 2002 01:44:19 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Can someone explain why...
cuts = {#1 #2, #1(1 - #2), (1 - #1)#3, (1 - #1)(1 - #3)} & @@@
RandomArray[UniformDistribution[0, 1], {100000, 3}];
Dimensions[Select[cuts, Min[#] > .1 &]] // Timing
Calculates in about 1 second, but the equivalent (but I thought more
memory efficient)...
Dimensions[
Select[{#1 #2, #1(1 - #2), (1 - #1)#3, (1 - #1)(1 - #3)} & @@@
RandomArray[UniformDistribution[0, 1], {100000, 3}],
Min[#] > .1 &]] // Timing
Takes more than 4 times longer to compute.
Note that if you take out the processing of the random array, the problem
isn't so strong, but still it seems the condensed code is faster by about
10%.
In[73]:=
rnds=RandomArray[UniformDistribution[0,1],{100000,3}];
Dimensions[Select[rnds,Min[#]>.1&]]//Timing
Out[74]=
{1.532 Second,{72861,3}}
In[75]:=
Dimensions[
Select[RandomArray[UniformDistribution[0,1],{100000,3}],
Min[#]>.1&]]//Timing
Out[75]=
{1.742 Second,{73127,3}}
Look forward to hearing other peoples comments.
Chris