Re: Replace, ReplaceAll and If time performace comparition

• To: mathgroup at smc.vnet.net
• Subject: [mg127289] Re: Replace, ReplaceAll and If time performace comparition
• From: Dana DeLouis <dana01 at me.com>
• Date: Sat, 14 Jul 2012 01:29:48 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• Delivered-to: mathgroup-newout@smc.vnet.net
• Delivered-to: mathgroup-newsend@smc.vnet.net

```> (If[# < 0, 0, #] & /@ randomList); // AbsoluteTiming
> {0.572200, Null}
> ...  There is some trick to make it faster?

Hi.   You've got a great solution with Clip, but just to add 2 cents..

In other programming languages, sometimes using Max or Min instead of an IF statement is nice.

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

t1=(If[#<0,0,#]&/@randomList);//AbsoluteTiming
{0.729998,Null}

t2=(Max[#,0]&/@randomList);//AbsoluteTiming
{0.454711,Null}

t1==t2
True

In the old days before Clip, one way was to use two IF statements.
One neat technique was to replace the two IF statements with Median.

v=RandomInteger[{-100,100},20];

// New
Clip[v,{0,1}]
{0,0,1,1,1,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0}

// Old days
Median[{0,#,1}]& /@v
{0,0,1,1,1,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0}

%%==%
True

If one were stuck without access to a Median function, then one way without IF statements...

Min[Max[0,#],1]& /@ v
{0,0,1,1,1,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0}

= = = = = = = = = =
Dana DeLouis
Mac & Math 8
= = = = = = = = = =

On Jun 24, 4:24 am, Murta <rodrigomur... at gmail.com> 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

```

• Prev by Date: Re: Algorithm Analysis Course: Should I use Mathematica for projects? //oops, typos
• Next by Date: Re: Embedded HTML CDF rendered as grey box.
• Previous by thread: Re: Replace, ReplaceAll and If time performace comparition
• Next by thread: Is there a way to stop the vertex labels from over-lapping?