Extract is slow in Mathematica 4 on PPC
- To: mathgroup at smc.vnet.net
- Subject: [mg18455] Extract is slow in Mathematica 4 on PPC
- From: "William B. Marks" <bmarks at helix.nih.gov>
- Date: Wed, 7 Jul 1999 00:11:37 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Let us compare Extract to a simple less versitile alternative:
extrct[expr_, {prts__}] := expr[[ prts]].
Make arrays with 1, 2 and 3 numbers per element:
{nx, ny} = {40, 50};
arry1 = Array[#1 #2 &, {nx, ny}];
arry2 = Array[{#1, #2} &, {nx, ny}];
arry3 = Array[{#1, #2, #1 #2} &, {nx, ny}];
Make a list of parts to extract
numPrts = 1000;
prts = Array[{Random[Integer, {1, nx}], Random[Integer, {1, ny}]} &, numPrts];
Time Extract and extrct while they get the parts.
Extract[arry1, #] & /@ prts; // Timing
Extract[arry2, #] & /@ prts; // Timing
Extract[arry3, #] & /@ prts; // Timing
{1.61667 Second, Null}
{4.46667 Second, Null}
{6.9 Second, Null}
extrct[arry1, #] & /@ prts; // Timing
extrct[arry2, #] & /@ prts; // Timing
extrct[arry3, #] & /@ prts; // Timing
{0.05 Second, Null}
{0.0666667 Second, Null}
{0.0666667 Second, Null}
on a Mac PPC.
In Mathematica 3 each of these 6 calculations took .0166 Seconds, 1/4 of .06666.
The big jump in time for arrays of 2 numbers is the killer. The jump is
greater when Extract is used within Fold instead of Map as above. Till I
understand this I will use extrct.
Cheers,
Bill Marks