Begin forwarded message:

From: Igor Stasenko <siguctua@gmail.com>
Subject: Re: Else I can do a mail to the moose mailing...
Date: May 4, 2013 12:45:36 AM GMT+02:00
To: Stéphane Ducasse <stephane.ducasse@inria.fr>

So i spent a little time to make an experiment, how fast i can render
the tree visualization.

(gray screenshot)
This one i can zoom& pan in real time without even noticing any sort of delay:

(AthensTreeView
openOn: Collection  extentBlock: [  :cls |  (cls allInstVarNames
size+1)*5 @  (cls methodDict size + 1) ]
childsBlock: [ :cls | cls subclasses ]).


(white screenshot)
This one a bit sluggish, because of drawing too many curves (but if
you comment curve drawing - connecting each child with its parent,
and leave drawing only boxes.. it will be quite fast.. for real-time zoom & pan)

(AthensTreeView
openOn: Object  extentBlock: [  :cls |  (cls allInstVarNames
size+1)*5 @  (cls methodDict size + 1) ]
childsBlock: [ :cls | cls subclasses ]).

And sure, smart people usually employ different visualizations for
such large trees, since it makes no sense:
Object withAllSubclasses size
6882

but even without it, if you limit max zoom, you can go very fast (
there is a lot of literature how you can do geometry culling (by
occluding unnecessary
geometry to not waste cycles on it, since it is outside of view anyways)


--
Best regards,
Igor Stasenko.
<Screen Shot 2013-05-04 at 12.33.02 AM.png>
<Screen Shot 2013-05-04 at 12.35.35 AM.png>
<AthensTreeView.st>
<AthensSimpleTreeNode.st>