On 05 Apr 2014, at 23:35, Joachim Geidel <[email protected]> wrote:

> Yes, #become: is *very* slow in Pharo. No problem at all in VisualWorks or 
> Dolphin Smalltalk or Pharo 1.2, though! 
> 
> Time millisecondsToRun: [1000 timesRepeat: [String new become: String new ]] 
> 
> Pharo 3.0 (and also in 2.0 and 1.4):
> 3948 3495 2891 2532 3162
> 
> Pharo 1.2 with the Squeak 4.2.5beta1U VM:
> 90 89 82 90 72
> 
> VisualWorks 7.9.1: note that this is measured in microseconds: 
> Time microsecondsToRun: [1000 timesRepeat: [String new become: String new ]] 
> 211 208 222 212 208

Yes, this is an extreme difference.

On my machine, the above takes between 1 and 2 seconds in Pharo 3 (Pharo VM) 
and Squeak 4.5 (Cog VM), while VW 7.1 takes just 100 to 200 microseconds.

Normally, #become: has to iterate over all memory, but this benchmark is a bit 
special, since it involves two new objects, maybe VW's memory manager somehow 
optimises this away.

Sven

Reply via email to