I've been thinking about performance issues in GEF and wondering about making GEF more array oriented than Collection oriented, particularly as far as FigGroups are concerned.
 
All the FigGroups I've seen in actual applications are of a fixed size so there is no great benefit in storing contents in a collection rather than an array.
 
I'm considering making a distinction between those FigGroups that are a fixed size or not. Fixed size figs will use an array as their store and variable sized figs will use an ArrayList.
 
I'll probably determine which to create by whether a Fig implements a certain interface. I've previously mentioned a possible interface such as
 
FigContainer
    Collection getFigs()
    Fig getFigAt(int i)
 
Maybe we should have 2 extensions of this VariableFigContainer and FixedFigContainer
 
FixedFigContainer would add no extra methods but act as a trigger to indicate storage by array.
VariableFigContainer would indicate storage by ArrayList and would enforce the methods like
    void addFig(Fig f);
    void removeFig(Fig f);
 
I'd also like a test app put together to test performance issues. Something that will automatically create a graph of a given number of nodes and help with timing drags and so on. I'd like to know that from one release of GEF to the next that we are not adding to any perfomance problems the client app may already have.
 
Bob.