[squeak-dev] Re: [Vm-dev] [ENH] A better finalization support (VM &
language side)
Levente Uzonyi
leves at elte.hu
Mon Mar 8 22:44:14 UTC 2010
On Mon, 8 Mar 2010, Igor Stasenko wrote:
>
> Please, review the
> http://bugs.squeak.org/view.php?id=7473
>
> There are two sets of changesets - one for vmmaker and other is for
> language-side.
>
> A VMMaker changeset is based on VMMaker-dtl.159.
>
> Here the little benchmark, between old and new weak registries:
>
> { WeakRegistry. WeakFinalizationRegistry } collect: [:class |
> | registry weaklings time1 time2 |
> registry := class new.
> WeakArray removeWeakDependent: registry.
>
> weaklings := (1 to: 100000) collect: [:i | Object new ].
> time1 := [ weaklings do: [:each | registry add: each ] ] timeToRun.
> weaklings at: 100 put: nil.
> Smalltalk garbageCollect; garbageCollect.
> time2 := [ registry finalizeValues ] timeToRun.
> time1 @ time2
> ]
> {7816 at 41 . 4114 at 0}
>
> While its not much better at first benchmark (since using the same
> approach to store objects in one dictionary),
I took a quick look and found that you omitted the semaphore from
WeakFinalizationRegistry. I think it won't work this way.
> while other is significant, since there is no longer need to scan a
> whole collection to detect an items which become a garbage.
That's great.
>
> Btw, i wonder, why current WeakRegistry using a WeakKeyDictionary
> instead of WeakIdentityKeyDictionary?
> Isn't a weak refs is identity-based?
>
I found it strange too, but I think the users of WeakRegistry don't
implement their own #hash and #=, though I didn't check that. Using a
WeakIdentityKeyDictionary could also mean better performance in most
cases.
> I am also a bit wonder, why WeakRegistry has to support a copy protocol?
> It may lead to unpredictable behavior once you try to copy such kind
> of container, no matter how well you protect it.
I think copy is supported because WeakRegistry is a collection. I wonder
how could you get the unpredictable behavior with the current
implementation.
Levente
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
More information about the Squeak-dev
mailing list
|