Thanks all.
Interesting. I saw by using tallySends that:
timesRepeat:
This simulation took 6.0 seconds.
**Tree**
1 SmallInteger(Integer)>>timesRepeat:
**Leaves**
100001 UndefinedObject>>DoIt
1 SmallInteger(Integer)>>timesRepeat:
1 UndefinedObject>>DoIt
to:do:
This simulation took 3.0 seconds.
**Tree**
**Leaves**
1 UndefinedObject>>DoIt
I guess this is one consequence of being inlined.
This makes ask another questions:
-how to know what's inlined, what method have suche properties (a comment
would be cool, so if we had to choose...) ?
-how to add Compiler inlining rules (as it's easy ;) ) ?
-why not inlining timesRepeat: (as I guess we don't really change it often)
?
Thanks.
ps: the result is slow because I used a 5 year old (at least) computer :). I
think I got a 10x difference in a 2 year one...
2009/11/13 Nicolas Cellier <[email protected]>
> 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
>
--
Cédrick
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project