There is also a difference between: [self atEnd ifTrue: [^nil]. self next. true] whileTrue.
and: [self atEnd ifTrue: [^nil] self next] repeat. Warning: it's quite easy to add Compiler inlining rules, a bit tougher to add corresponding Decompiler tricks. 2009/11/13 Marcus Denker <[email protected]>: > > On Nov 13, 2009, at 9:51 AM, Cédrick Béler wrote: > >> Hi, >> >> I noticed quite a difference between the two method who "looks" the same to >> me. Is it normal ? >> > > Normal. to:do: is lnlined (compiled as jumps in the bytecode), whereas > timesRepeat: is a message > send with a closure activation. > > Marcus > > fun is the difference between: > > (1 to : 10000) do: > and > 1 to: 10000 do: > > one is compiled to jumps, the other not and in addition creates a temp > collection. > > Marcus > > > >> I use a rc image (haven't tested in squeak). And it's the same on windows >> and linux. >> >> count := 0. >> [1 to: 10000000 do: [:i | count :=count + 1]] timeToRun." 677" >> count := 0. >> [10000000 timesRepeat: [count := count + 1]] timeToRun" 2571" >> >> If not normal, I'll open a issue. >> >> Thanks >> >> -- >> Cédrick >> _______________________________________________ >> Pharo-project mailing list >> [email protected] >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
