On 7/31/2011 6:56, Igor Stasenko wrote:
And it works! All become tests are green. See attached for VM and image side code.
Good idea. But your benchmark is a little off:
Now most interesting thing. How much speed we gain?
Before:
| x y |
x := 'ab' copy. y := 'cd' copy.
[ 100 timesRepeat: [ x become: y ] ] timeToRun
x and y should be young in the above and the performance of #become should be much faster than when they are old. To wit:
[ 100 timesRepeat: [ 'ab' copy become: 'cd' copy ] ] timeToRun => 36
| x y | x := 'ab' copy. y := 'cd' copy. Smalltalk garbageCollect. "make x and y old" [ 100 timesRepeat: [ x become: y ] ] timeToRun => 1248
So I'm not sure how valid your benchmark really is.
Cheers, - Andreas