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.