[squeak-dev] Looking for real-world Magma application

Chris Muller asqueaker at gmail.com
Thu Nov 4 04:41:29 UTC 2010


I want to start talking about Magma on the Magma list again.  There
have been many improvements since the last release which I am
preparing into a new release for this year which I hope will alleviate
the remaining performance issues.  It won't be "faster", but it will
cope with degradation issues like the finalizationProcess.

Noberto, it happens that what you are doing really aggravates the
finalization problem.  Igor or I can help you fix that.  Also, using a
MagmaCollection to access one object at a time is not a good deal;
because the MagmaCollections were designed for relational-style
"end-user query" type of access, where you can get lists of several
objects from one where: query.  Magma will do much better with an
object-model for other kinds of access such as your lookup/merge
behavior.

Also, by having set your readStrategy to a minimumDepth of 0, you are
making a trip to the repository just to bring back _one object_ at a
time.  That is not a good deal.

That even further compounds performance problem, because that one
object comes back typically pointing to all proxies.  So any access to
your model at all is going to invoke proxies at every level, which
forces Squeak into a lot of become:'s.  Consider how slow Squeak's
become is:

  [ Object new becomeForward: Object new copyHash: false ] bench

So I think you are hitting on all cylinders of the worst of Magma's worst.  :-/

I'd like to help.  Please feel free to mail to the Magma mailing list,
if you like, I would be interested to see if we can get Magma going
for you..

  - Chris



On Wed, Nov 3, 2010 at 8:53 AM, Norberto Manzanos <nmanzanos at gmail.com> wrote:
>
>>
>> the only thing which looking suspicious in your code is following:
>>
>> session readStrategy: (MaReadStrategy minimumDepth: 0).
>>
>>
>
> With this code I could improve performance considerably. Most of the time,
> my program  doesn't need to materialize objects, so I tried this kind of
> null strategy and it worked fine.
>
> Regards
>
>
>
>



More information about the Squeak-dev mailing list