Timers, Stepping, Co-routines and Riverdance in Squeak

Lex Spoon lex at cc.gatech.edu
Wed Mar 22 11:01:39 UTC 2000


It sounds like you are simply seeing problems in Squeak transmitting its
screen to the video card.  Could you try the following and see how long
it takes?

	[ Display forceToScreen: (1 at 1 extent: Display extent) ] timeToRun

On my computer (Linux, K6-3/333, TNT2-Ultra), this takes over 100
milliseconds.  Thus if I ever foolishly try an animation that takes up
the full srceen, I get a maximum of 10 frames per second just from the
time needed to shove the bitmaps over to the X server and onto the
display.

It would be interesting to hear how other platforms handle this.

Lex



Michael Stevens <mjstevens at mindspring.com> wrote:
> There's another issue lurking nearby that we should not overlook,
> which halted my use of Morphic for animated entity-relationship 
> diagramming: a world redraw takes place in a single canvas, which 
> is allocated as a single rectangle encompassing the full bounds 
> of all morphs displayed in the world.  
> 
> A divide-and-conquer approach might improve Morphic performance 
> for large (in extent) groups of morphs.  By this, I mean dividing 
> up the area to be drawn into subrectangles for which a canvas can 
> be allocated (and reused) without provoking histrionics from the 
> garbage collector, or causing the underlying OS to begin paging,
> or requiring higher initial allocations of memory for Squeak.  
> Subrectangles which do not intersect the display may be skipped 
> entirely.
> 
> We pause briefly for platform disclosure:
>   -- Squeak 2.6 [this work was done several months ago]
>   -- Pentium-II 450, 128 MB RAM
>   -- ATI Rage Pro Turbo, 8 MB RAM
>   -- WinNT 4, SP3
> 
> In my prototype, the frame rate was acceptable for a fairly large 
> number of entities, as long as they were all crowded into a 
> relatively compact region.  The "cartoon physics" and the model's
> bookkeeping used about 20% of the CPU.  As the entities spread 
> themselves out into a more viewable arrangement, the CPU usage 
> quickly rose to 100% and then the frame rate declined.  Further 
> experimentation revealed that the machine began to struggle with 
> only a handful of entities if any of them passed appreciably beyond 
> the bounds of a 1280x1024 display.  Being an unreasonable person, 
> I wanted entities to arrange themselves on a landscape potentially 
> several times larger than the screen on each axis.
> 
> My sense is that most of the people on the Squeak list who are
> concerned with frame rates are focused on smaller windows than
> I was (e.g. the miracle of Alice in a 320x240 window).  Has 
> anyone played with farflung arrangements of morphs?  Am I missing 
> an obvious optimization?
> 
> --Michael Stevens
>   Not speaking for the Genomica Corporation
> 
> PS. Teaser for the Squeak-on-a-palmtop crowd:
>     If we can get away from Single Large Rectangle Syndrome (and 
>     especially if anyone gets around to implementing the Remote
>     Frame Buffer protocol from VNC in Squeak), then even a RAM-
>     constrained device like a PDA might be able to host large, 
>     complex Morphic scenes with acceptable (although probably 
>     not wonderful) performance.





More information about the Squeak-dev mailing list