Monticello is ... sloooooooooooow

Andreas Raab andreas.raab at gmx.de
Tue Apr 19 06:08:48 UTC 2005


Hi -

I am now at the point where the slowdown incurred by the combination of 
SystemChangeNotifier and Monticello makes the system almost unusable. It 
takes half a second to compile a method - *any* method regardless how 
small. Sometimes, when I regenerate some automatically generated methods 
I really want to go get some coffee and come back afterwards (it reminds 
me of my C days when we did our system builds over lunch breaks).

It looks like the culprit is the exponential explosion of the work being 
done in MCWorkingCopy - since each working copy tries to determine 
whether it #includesMethod:ofClass: and since 
PackageInfo>>includesClass: recomputes the category for each class, and 
since this recomputation uses linear search in SystemOrganization it 
seems that, on average, we have a complexity of
	(SystemOrganization size / 2) * (MCWorkingCopy instanceCount)
for each method and on my system the above makes something like a 
whopping 160,769 operations when compiling a single methods (2347 
categories, 137 packages).

And, yes, I know that O(c*n) is still linear complexity but it is still 
a very big c in that equation ;-)

Am I the only person who sees that? Surely there must be a way of 
getting that c down two orders of magnitude...

Cheers,
   - Andreas



More information about the Squeak-dev mailing list