speed of evaluation of an instruction
- To: mathgroup at smc.vnet.net
- Subject: [mg64961] speed of evaluation of an instruction
- From: rudy <rud-x at caramail.com>
- Date: Fri, 10 Mar 2006 05:14:53 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
hello,
To sort a list I utilize these instructions:
t = Split[testList];
t = t /. x : {1 ..} :> {1, Rest[x] /. 1 -> 0} // Flatten;
Position[t, 1] // Flatten;
But there's something I don't understand at all.
If I do:
In > testList = Table[Random[Integer], {100000}];
In > t = Split[testList];
t = t /. x : {1 ..} :> {1, Rest[x] /. 1 -> 0} // Flatten;
Position[t, 1] // Flatten; // Timing
Out > {0.062 Second, Null}
cool: it's quick!... but if I do then:
In > rapid[l_List] := Module[{t = Split[l], x, res},
t = t /. x : {1 ..} :> {1, Rest[x] /. 1 -> 0} // Flatten;
res = Position[t, 1] // Flatten]
In > rapid[testList];//Timing
Out > {0.344 Second, Null}
It's 5 times slower...!?
Nevertheless the only difference between the two cases is in the second the instruction is executed inside a Module...
That's not all:
We should think this is caused by the fact we execute an instruction inside a function ("rapid"), but if we do:
In > Position[
Split[testList] /.
x : {1 ..} :>
{1, Rest[x] /. 1 -> 0}
// Flatten, 1
] // Flatten; // Timing
Out > {0.468 Second, Null}
It's again slower!...
Could anybody expalin this ?
Thanks all
Rudy
- Follow-Ups:
- Re: speed of evaluation of an instruction
- From: Carl Woll <carlw@wolfram.com>
- Re: speed of evaluation of an instruction