On 05 Apr 2014, at 23:35, Joachim Geidel <joachim.gei...@onlinehome.de> wrote:

> Hi Igor, 
> 
> thanks a lot, your analysis is correct, and it helped.
> 
> Am 05.04.2014 um 17:05 schrieb Igor Stasenko:
>> so, without going deep into implementation details, just by reading comment
>> i can already see potential bottleneck - using #become: operation which is 
>> veery slow.
> 
> 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

these numbers are strange. Because mariano used a lot become: and he did not 
report a factor like that.
Thanks for reporting them.

> 
> 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

this will be fixed with spur and body.
> 
> That’s a factor of more than 10.000! IMHO, someone should have a look at the 
> primitives involved.
> 
>> also, by tracking senders of #knownJavaSubclasses , i see there's also uses 
>> of #become operation.. 
>> 
>> So, my first verdict is: 
>>       - excessive use of #become ==> slow performance
>> :)
>> 
>> (sure, i have no idea if you can avoid using become or not, but my bet this  
>> is main reason of low performance)
> 
> Well, given the measurements above, I wouldn’t say that the reason is 
> excessive use of #become:, but the extremely slow implementation of #become: 
> in Pharo since 1.4. However, I managed to remove the need for sending 
> #become: in #findClassFor:, but not in the second place. This reduces the 
> time to start a Java VM to 5-6 seconds on my aged machine (2.4 GHz Intel Core 
> 2 Duo from early 2008). The benchmark which I mentioned in my announcement 
> and which took 12 seconds came down to less than 0.2 seconds. That's a little 
> more than the 0.11 seconds in VisualWorks, but at least in the same order of 
> magnitude.
> 
> Thanks again!
> Joachim
> 
> 


Reply via email to