[Pharo-project] Speeding up Pharo 1.1

Levente Uzonyi leves at elte.hu
Mon Oct 18 17:18:17 EDT 2010


On Mon, 18 Oct 2010, Nicolas Cellier wrote:

> 2010/10/18 Igor Stasenko <siguctua at gmail.com>:
>> On 18 October 2010 23:18, Nicolas Cellier
>> <nicolas.cellier.aka.nice at gmail.com> wrote:
>>> 2010/10/17 Levente Uzonyi <leves at elte.hu>:
>>>> On Sat, 16 Oct 2010, Bart Veenstra wrote:
>>>>
>>>>> Hi list,
>>>>>
>>>>> I have been working with Pharo for almost a month now, and I suspect
>>>>> that the performance is degrading fast. UI tasks takes several seconds
>>>>> to react to my keyboard.
>>>>
>>>> That kind of sluggishness is probably related to finalization/gc. Please
>>>> send us the result of the following expression:
>>>>
>>>> (WeakArray classPool at: #FinalizationDependents)
>>>>        select: [ :each | each notNil ]
>>>>        thenCollect: [ :each | each class -> each size ]
>>>>
>>>
>>> While updating pharo 1.2, after an EndOfCentralDirectory error, I got
>>> a very unresponsive image...
>>>
>>> ((WeakArray classPool at: #FinalizationDependents) as: Array)
>>>       select: [ :each | each notNil ]
>>>       thenCollect: [ :each | each class -> each size]
>>> ->
>>> {(WeakIdentityKeyDictionary->22370).
>>
>> This is an MC cache. And major reason of image slowdown.
>>
>
> Levente did this simplification in trunk:
>
> cachedDefinitions
> 	^definitions ifNil: [ definitions := WeakIdentityKeyDictionary new ]
>
> It would be worth a try in Pharo.

IIRC Pharo's WeakKeyDictionary (and subclasses) don't work properly if 
they're not registered to the finalization process. So this won't work 
as long as that's not fixed.


Levente

>
> Nicolas
>
>>> (WeakRegistry->0).
>>> (WeakRegistry->0). (WeakRegistry->0). (WeakRegistry->2)}
>>>
>>> I tried to inspect it 5 minutes ago, but hey, answer in another email...
>>> Ah, OK, cmd+shift+. just worked. I had to interrupt
>>> #finalizationProcess itself finally...
>>> Oh inspect is sorting the keys... unusable.
>>> So what's in the array ? Things like
>>>
>>> (ScriptLoader>>#update12125 "a CompiledMethod(0)")->a
>>> MCMethodDefinition(ScriptLoader>>update12125)
>>> (PragmaCollector>>#release "a CompiledMethod(964689920)")->a
>>> MCMethodDefinition(PragmaCollector>>release)
>>> (Float>>#arcSin "a CompiledMethod(358088704)")->a
>>> MCMethodDefinition(Float>>arcSin)
>>>
>>> I don't understand yet, but I begin to gather clues why updating pharo
>>> goes so badly...
>>>
>>> Nicolas
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project at lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project at lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project at lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>


More information about the Pharo-dev mailing list