Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

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

Search the Archive

Re: Replace, ReplaceAll and If time performace comparition

  • To: mathgroup at smc.vnet.net
  • Subject: [mg127027] Re: Replace, ReplaceAll and If time performace comparition
  • From: Bill Rowe <readnews at sbcglobal.net>
  • Date: Mon, 25 Jun 2012 04:01:42 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

On 6/24/12 at 4:26 AM, rodrigomurtax at gmail.com (Murta) wrote:

>HI all I was working in some simulations with random numbers and get
>this example of performance comparition.

>randomList = RandomInteger[{-100, 100}, 10 10^6];

>(randomList /. (x_ /; x < 0 -> 0)); // AbsoluteTiming {5.747133,
>Null}

>Replace[randomList, (x_ /; x < 0 -> 0), 1]; // AbsoluteTiming
>{4.758984, Null}

>(If[# < 0, 0, #] & /@ randomList); // AbsoluteTiming {0.572200,
>Null}

>I personally prefer work with patterns because they are more compact
>and functional. Someone knows why patter is one magnitude order
>slow?? There is some trick to make it faster?

I don't know how to make the pattern matching faster. But I do
know how to create the list faster. That is:

In[1]:= randomList = RandomInteger[{-100, 100}, 10 10^6];

In[2]:= (a = If[# < 0, 0, #] & /@ randomList); // AbsoluteTiming

Out[2]= {0.597679,Null}

In[3]:= (b = Clip[randomList, {0, 100}]); // AbsoluteTiming

Out[3]= {0.086329,Null}

In[4]:= a == b

Out[4]= True

And it seems to me the syntax of Clip makes it very apparent
what the code does.




  • Prev by Date: Re: Replace, ReplaceAll and If time performace comparition
  • Next by Date: Re: Replace, ReplaceAll and If time performace comparition
  • Previous by thread: Re: Replace, ReplaceAll and If time performace comparition
  • Next by thread: Combining Two Lists