2010/10/19 Levente Uzonyi <[email protected]>: > On Mon, 18 Oct 2010, Nicolas Cellier wrote: > >> 2010/10/18 Igor Stasenko <[email protected]>: >>> >>> On 18 October 2010 23:18, Nicolas Cellier >>> <[email protected]> wrote: >>>> >>>> 2010/10/17 Levente Uzonyi <[email protected]>: >>>>> >>>>> 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. >
Huh? Can you provide a code to show it? Test case please? > > 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 >>>> [email protected] >>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >>>> >>> >>> >>> >>> -- >>> Best regards, >>> Igor Stasenko AKA sig. >>> >>> _______________________________________________ >>> Pharo-project mailing list >>> [email protected] >>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >> >> _______________________________________________ >> Pharo-project mailing list >> [email protected] >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > -- Best regards, Igor Stasenko AKA sig. _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
