Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

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

Search the Archive

Re: List concatenation - two more methods, one truly fast

  • To: mathgroup at smc.vnet.net
  • Subject: [mg87625] Re: List concatenation - two more methods, one truly fast
  • From: Oliver Ruebenkoenig <ruebenko at uni-freiburg.de>
  • Date: Mon, 14 Apr 2008 06:54:09 -0400 (EDT)
  • References: <ftv8ro$7o1$1@smc.vnet.net>

Carlos,

p[arg_] := Graphics[{RGBColor[Random[], Random[], Random[]],
       pp[{{Random[], Random[]}, {Random[], Random[]}, {Random[], 
Random[]}}]}]

ClearAll[poly]; poly = {};
Print[Timing[Do[poly = {p[i], poly}, {i, 1, n}];
         poly = poly /. pp -> Polygon;
         ][[1]]];

0.068004 Second

Show[poly]


hth,

Oliver


On Mon, 14 Apr 2008, carlos at colorado.edu wrote:

> As follow up, the  following tests are more realistic in that p
> is similar to the Graphics objects produced during a mesh
> plot.  The last method (table entry substitution) is about 2 orders
> of magnitude faster. Unfortunately in actual plot generation I
> dont known n (number of objects) in advance, so that one is out.
>
> ClearAll[poly,p,n]; poly={}; n=5000; SetRandom[1234];
> p[arg_]:= {Graphics[RGBColor[Random[],Random[],Random[]]],
>               Graphics[Polygon[{{Random[],Random[]},
>              {Random[],Random[]},{Random[],Random[]}}]]};
> Print[Timing[Do[AppendTo[poly,p[i]],{i,1,n}]][[1]]];
> ClearAll[poly]; poly={};
> Print[Timing[Do[poly=Append[poly,p[i]],{i,1,n}]][[1]]];
> ClearAll[poly]; poly={};
> Print[Timing[Do[poly=Join[poly,{p[i]}],{i,1,n}]][[1]]];
> ClearAll[poly]; poly={};
> Print[Timing[Do[poly={poly,p[i]},{i,1,n}];poly=Flatten[poly]][[1]]];
> ClearAll[poly]; poly=Table[0,{n}];
> Print[Timing[Do[poly[[i]]=p[i],{i,1,n}]][[1]];
>
>
> 11.3361 Second
> 11.3306 Second
> 11.7123 Second
> 7.24559 Second
> 0.061505 Second
>
> Observation:   timing of the first 4 methods is roughly O(n^2).
> That would suggest that Mathematica does not implement a true
> list processor in the kernel, since building a list should be O(n).
>
>
>

Oliver Ruebenkoenig, <ruebenko AT uni-freiburg.de>


  • Prev by Date: Re: Documentation - what is the big secret?
  • Next by Date: mx files
  • Previous by thread: List concatenation - two more methods, one truly fast
  • Next by thread: Coordinates of vertices