Re: Replace, ReplaceAll and If time performace comparition
- To: mathgroup at smc.vnet.net
- Subject: [mg127025] Re: Replace, ReplaceAll and If time performace comparition
- From: Andrzej Kozlowski <akozlowski at gmail.com>
- Date: Mon, 25 Jun 2012 04:01:00 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201206240826.EAA08423@smc.vnet.net>
On 24 Jun 2012, at 10:26, 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? > > tks > Murta > Purpose built-in functions will always be much faster than general methods (such as pattern matching). However, in this particular your fastest method is actually far from optional: In[1]:= randomList=RandomInteger[{-100,100},10 10^6]; In[2]:= (a=If[#<0,0,#]&/@randomList);//AbsoluteTiming Out[2]= {0.874206,Null} In[3]:= (b=Clip[randomList,{0,Infinity},{0,1}]);//AbsoluteTiming Out[3]= {0.064867,Null} In[4]:= a==b Out[4]= True There is no way to speed up pattern matching to give comparable performance. Andrzej Kozlowski
- Follow-Ups:
- Re: Replace, ReplaceAll and If time performace comparition
- From: Christoph Lhotka <christoph.lhotka@fundp.ac.be>
- Re: Replace, ReplaceAll and If time performace comparition
- References:
- Replace, ReplaceAll and If time performace comparition
- From: Murta <rodrigomurtax@gmail.com>
- Replace, ReplaceAll and If time performace comparition