[squeak-dev] Re: Odd performance characteristics of symbol creation
Andreas Raab
andreas.raab at gmx.de
Wed May 6 19:27:52 UTC 2009
Nicolas Cellier wrote:
> Isn't that dangerous if you don't fixCollisionsFrom: index ?
Why would it? All this does is avoiding to update the tally ivar if
we're replacing a previously reclaimed entry with a new value. And I
don't think that #fixCollisionsFrom: even looks at tally.
Cheers,
- Andreas
> Nicolas
>
> 2009/5/6 Andreas Raab <andreas.raab at gmx.de>:
>> Adrian Lienhard wrote:
>>> I haven't had time to look into this very closely yet but maybe somebody
>>> else already knows what is going on. My guess is that the NewSymbols weak
>>> set is repeatedly grown since tally is not decreased if the GC removes a
>>> weak element.
>> That's an excellent guess. Try changing WeakSet to e.g.,
>>
>> WeakSet>>atNewIndex: index put: aValue
>> "Add newValue at the given index. Don't increment tally
>> if current slot is nil since a previous value has been collected"
>> (array at: index) ifNil:[^array at: index put: aValue].
>> ^super atNewIndex: index put: aValue
>>
>> Cheers,
>> - Andreas
>>
>>
>>
>
>
More information about the Squeak-dev
mailing list
|