MathGroup Archive 2001

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

Search the Archive

how to be as efficient as Mean[list] - efficient summing of function applied to list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg28531] how to be as efficient as Mean[list] - efficient summing of function applied to list
  • From: "Matthew D. Langston" <langston at SLAC.Stanford.EDU>
  • Date: Wed, 25 Apr 2001 01:30:33 -0400 (EDT)
  • Organization: Stanford Linear Accelerator Center
  • Sender: owner-wri-mathgroup at wolfram.com

I have a one dimensional list of 28,900 data points.  I want to apply a
function, called f[x_], to each element of this list and sum the resulting
list to obtain one number.  For the following example, f[x_] := -Log[x].  My
naive idea was to do something like this:

Length[data]
28900

Apply[Plus,Map[f[#1]&,data]]//Timing
{32.136 Second,-69627.8}

However, this seemed to take to long when compared to other built-in
Mathematic functions that iterate over a list and perform a sum.  For
example, the Mean function on the same data takes two orders of magnitude
less time than my function:

Mean[data]//Timing
{0.13 Second,-0.0296526}

Is the "Apply[Plus[...]]" method the right method to use for what I want to
do?  Or, is it just that the time it takes my function f[x_] to perform one
calculation, when amortized over the whole 28,900 data points, just adds up
to a lot of time (32 seconds in my example).

Regards, Matt

--
Matthew D. Langston
SLD, Stanford Linear Accelerator Center
langston at SLAC.Stanford.EDU



  • Prev by Date: 4.0 student Version decoding error
  • Next by Date: Help with a simple problem.
  • Previous by thread: Re: 4.0 student Version decoding error
  • Next by thread: Re: how to be as efficient as Mean[list] - efficient summing of function applied to list