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
|