[Vm-dev] A trick to speedup #become: (but not becomeForward:)
Igor Stasenko
siguctua at gmail.com
Sun Jul 31 22:30:56 UTC 2011
On 1 August 2011 00:02, Chris Muller <asqueaker at gmail.com> wrote:
> I'm not sure how easy it would be to get the physical size of the
> objects which weren't retrieved. As you said, encoding it in the
> referencing oid might be the only way - which would require rewriting
> of the OidMap and upgrade of legacy repositories. :(
>
Yes. And if you remember i gave you the code with another oid mapping
implementation,
which avoids using big-integers and a bit more simpler (i hope).
So maybe it is time to check what could be done there?
I don't having time for it right now, hoping that you have it.
> I understand why it won't work with becomeForward: - because that
> would be creating two copies of the object. But Magma needs to
> becomeForward:, rather than become:, its proxies... (pause to remember
> for sure why...). I think because of proxies to Symbol selectors -
> you can't become: any object to a Symbol selector or else their
> CompiledMethod literals would refer to the Proxy... So that would be
> another hurdle to overcome to succeed with your idea.
>
Symbols require special handling anyways: you must check/intern them
once reified.
But for majority of other objects, using these prims could mean a vast
difference.
> Just so you know, I _did_ implement your other workaround idea - where
> reified proxies are "saved up" into a OrderedCollection which is then
> bulk-becomed only once every 30 seconds. I didn't know if you saw it
> in the last release (Magma 1.2) - it was a great performance
> improvement! Your creative ideas are really helping Magma.
>
:)
> Thanks,
> Chris
>
>
--
Best regards,
Igor Stasenko AKA sig.
More information about the Vm-dev
mailing list