Slow performance

Todd Blanchard tblanchard at mac.com
Thu Nov 8 06:36:43 UTC 2007


OK, I'm totally frustrated.  I can't thing one in or out of  this  
database.

I want the root to act like a dictionary - so I set it up like this:

| set |
set := (MagmaSet  equivalenceAttributes: (Array with: #key)).
set addIndex: (MaSearchStringIndex attribute: #key).
MagmaRepositoryController create: 'magma' root: set.

I start the server session on a port and leave it.  In the client I  
subclass MagmaSession to add schema specific methods.  One thing I  
add is this:

MyDatabaseSession>>at: aSymbol ifAbsentPut: aBlock

	| collection assoc |
	collection := (self root where:[:ea | ea key = aSymbol]).
	collection isEmpty
		ifTrue: [self root add: (assoc := aSymbol->(aBlock value))]
		ifFalse: [assoc := collection first].
	^assoc value.	

This fails on a newly created database because MaCollectionReader  
isEmpty ends up calling sortIndex on a MaQueryTrunk which doesn't  
seem to understand it.

What gives?


More information about the Magma mailing list