Mac carbon VM 3.8.6b2 Experimental

John M McIntosh johnmci at smalltalkconsulting.com
Wed Jan 26 05:23:14 UTC 2005


As pointed out earlier macintosh os-x Carbon VMs have performance  
problems when rendering lots of little pixels areas. This is because at  
the end of moving bits from Squeak's object memory to the screen buffer  
we must ask the os-x display process to flush and draw the bits on the  
screen. This inter-process call is very expensive and slow as compared  
to the original drawing. Both Karsten Wolf and I have been thinking  
about this issue for years, however over the weekend I
managed to code up an acceptable (I think) solution.

see http://homepage.mac.com/johnmci/experimental
Squeak 3.8.6Beta2.app.sit

or let's see if this new service offering works
ftp://ftp.smalltalkconsulting.com/Squeak 3.8.6Beta2.app.zip

This os-x only carbon VM has changes to:

a) Limit screen flushes to 50 to 90 times per second by consolidating  
the drawing rectangle to the largest enclosing one in the sequence.

b) Invoke LockPixels only 50 to 90 times per second  instead of doing a  
lock/unlock on each draw operation.

As pointed out by Karsten Wolf karstenwo at web.de the following code  
sample takes 58 seconds to run with a 3.8.5b1 VM,
with a 3.8.6b2 VM it's 0.8 seconds.

Time millisecondsToRun:[
	| b |
	b _ Pen new.
	Display fillWhite.
	b place:(Display boundingBox bottomLeft).
	b hilbert: 7 side: 2]


I'll welcome people to try it out and report any issues, also if it  
crashes please send me the os-x crash logs.
Once the smoke clears I'll build one with the mac classic support.

--
======================================================================== 
===
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
======================================================================== 
===




More information about the Squeak-dev mailing list