Large array slows down Squeak

Parker, Mike mparker at CaseServices.com
Wed May 31 13:51:05 UTC 2000


> And there's another interesting observation.  In Morphic, the delay
> because of tenuring is much larger than in MVC.  This is probably
> because Morphic creates much more short-lived object garbage.

Umm, 'splain again why tenuring would make Morphic feel slow?

If Morphic creates lots of short-lived objects, then much (most?) of
those objects won't survive long enough to get tenured; besides, isn't
tenuring only done every now and then, when incremental GC's get too
long (too many survivors) or the root table gets full?

> Thinking about this, could this be the reason, why Morphic 
> always feels a little bit slower than MVC?  If yes, then the best
> approach to speed up Morphic would be to reduce the number of
> temporary objects...

Creating lots of temporary objects will trigger lots more minor
GC's which could make it run slower.  However, there are several
improvements to the collector that could improve this.  Dynamically
adjusting the allocation threshold (currently fixed at 4000) and
tenuring policy could reduce the frequency of minor GC's, giving
those short-lived objects more time to die while keeping minor GC
duration below the 10ms threshold.

Looking at the collector, though, it looks like the reason for the
4000 object allocation threshold is because the relocation phase
doesn't deal very well with the case where more than 2000 objects
need to be relocated in a single minor collection, although this
could be tweaked.





More information about the Squeak-dev mailing list