Re: List concatenation speed
- To: mathgroup at smc.vnet.net
- Subject: [mg87617] Re: List concatenation speed
- From: dh <dh at metrohm.ch>
- Date: Mon, 14 Apr 2008 05:46:21 -0400 (EDT)
- References: <ftsd1e$bba$1@smc.vnet.net>
Hi Carlos,
with Append & Co. every time you add a new element, the whole list is
copied. To prevent this, you may build a nested list like e.g.:
poly={poly,p}
instead of using Append. Finally you may Flatten the list: Flatten[poly].
hope this helps, Daniel
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?
>