MathGroup Archive 2002

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

Search the Archive

RE: AppendTo VERY slow


In this case, it would have been beneficial to have read the Help for
AppendTo where it says...

"An alternative and often more efficient way to build up a list is to use a
sequence of assignments of the form s = {s, elem}, and then to call Flatten
on the resulting structure. "

Here is an example of the two methods.

outlist = {};
Do[AppendTo[outlist, {1, 2}], {count, 1, 10000}] // Timing
{11.43 Second, Null}

Here, instead of adding a List of two elements I add an f[two elements] and
then after Flattening I convert f to List.

outlist = {};
Do[outlist = {outlist, f[1, 2]}, {count, 1, 10000}] // Timing
(outlist = Flatten[outlist] /. f -> List;) // Timing
{0.05 Second, Null}
{0. Second, Null}

David Park
djmp at

> From: Mike [mailto:M.P.Croucher at]
To: mathgroup at
> I use lists a lot in mathematica and tend to use AppendTo[] a lot in
> my programs.  Recently I wrote a function that i call over and over
> again and found that the results were coming very slowly and i MEAN
> slowly.  I was doing Fourier Transforms and all kinds of stuff so I
> put it down to those at first but I have just put in a load of Print
> statements just after each part of the function to see what was taking
> so long.
> I was amazed to see that the Fourier Transforms were so quick and what
> was actually taking the time was a part of my function that collected
> the results togther in the form I wanted and outputted the result.  It
> looks like this
> Do[
>     	elem = {xlist[[count]], ylist[[count]]]};
>     	AppendTo[outlist, elem];
>      , {count, 1, number}
>     ];
> It seems that as the list grows it gets slower and slower.  Any tips
> on a way around this would be greatly appreciated (would speed my life
> up no end)
> Thank
> Mike

  • Prev by Date: Strategy for overly long computations?
  • Next by Date: RE: AppendTo VERY slow
  • Previous by thread: Re: AppendTo VERY slow
  • Next by thread: RE: AppendTo VERY slow