Re: List concatenation speed

• To: mathgroup at smc.vnet.net
• Subject: [mg87585] Re: List concatenation speed
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Mon, 14 Apr 2008 05:40:16 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <ftsd1e\$bba\$1@smc.vnet.net>

```carlos at colorado.edu wrote:

> I am building mesh plots that require concatenation of thousands of
> Graphics objects into one list for Show[].  This is done by appending
> objects as they are created, and there are several ways to do that.
> Tested 3 of them for speed using a simple object:
>
>      p=Table[x,{50}]; n=10000;
>      ClearAll[poly]; poly={};
>      Print[Timing[Do[AppendTo[poly,p],{i,1,n}]]];
>      ClearAll[poly]; poly={};
>      Print[Timing[Do[poly=Append[poly,p],{i,1,n}]]];
>      ClearAll[poly]; poly={};
>      Print[Timing[Do[poly=Join[poly,{p}],{i,1,n}]]];
>
> {5.8395 Second,Null}
> {5.7206 Second,Null}
> {6.29728 Second,Null}
>
> Tests were run on version 5.2 on a G5 desktop Mac. I expected Join to
> win,
> but it didnt.  Is there a faster way?

Hi Carlos,

On my system (v6.0.2 Intel 64-bit Mac OS X 1.5.2), using *Sow* and
*Reap* as in

Reap[Do[Sow[p], {i, 1, n}]][[2, 1]]

is more than 80 times faster than your fastest solution. This will not
work on version below 5.xx.

Using *Table* is about 35 faster and works on any version.

Table[p, {i, 1, n}]

Here are the timings for the five approaches:

p = Table[x, {50}]; n = 10000;
ClearAll[poly1]; poly = {};
Print[Timing[poly = Reap[Do[Sow[p], {i, 1, n}]][[2, 1]];]];
ClearAll[poly]; poly = {};
Print[Timing[poly = Table[p, {i, 1, n}];]];
ClearAll[poly]; poly = {};
Print[Timing[Do[poly = Append[poly, p], {i, 1, n}]]];
ClearAll[poly]; poly = {};
Print[Timing[Do[AppendTo[poly, p], {i, 1, n}]]];
ClearAll[poly]; poly = {};
Print[Timing[Do[poly = Join[poly, {p}], {i, 1, n}]]];

{0.00965,Null}

{0.025739,Null}

{0.828765,Null}

{0.848818,Null}

{1.10683,Null}

Best regards,
-- Jean-Marc

```

• Prev by Date: Re: Frametick Orientation (2 Questions)
• Next by Date: Re: Cannot Factor an expression
• Previous by thread: Re: Re: List concatenation speed
• Next by thread: Re: List concatenation speed