On 05 Apr 2014, at 23:35, Joachim Geidel <joachim.geidel@onlinehome.de> 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