MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: List concatenation speed

  • To: mathgroup at smc.vnet.net
  • Subject: [mg87615] Re: List concatenation speed
  • From: Albert Retey <awnl at arcor.net>
  • Date: Mon, 14 Apr 2008 05:45:59 -0400 (EDT)
  • 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?
> 

This is much faster, but requires an extra flatten at the end. If 
constructing graphics, this might not even be necessary, on the other 
hand it could change the appearance of your graphics if you need to keep 
some brackets. There are cures for all cases, but for that one would 
need more detailed information about your objects...

ClearAll[poly]; poly = {};
Print[Timing[
    Do[poly = {poly, p}, {i, 1, n}];
    poly = Flatten[poly];
    ]];


hth,

albert


  • Prev by Date: List concatenation - two more methods, one truly fast
  • Next by Date: Re: List concatenation speed
  • Previous by thread: Re: List concatenation speed
  • Next by thread: Re: List concatenation speed