[Vm-dev] BitBLt performance work

Bert Freudenberg bert at freudenbergs.de
Fri Mar 15 21:13:33 UTC 2013


On 2013-03-15, at 20:01, tim Rowledge <tim at rowledge.org> wrote:

> I'm working on making bitBlt faster

Awesome! Maybe getting some usage statistics would be helpful. Very likely a handful of combinations dominates the workload. That's actually easy to verify.

I renamed #copyBits to primCopyBits and then did this:

===================================
copyBits
	BitBltStats ifNotNil: [ BitBltStats add: {
		destForm isForm ifTrue: [destForm depth].
		sourceForm isForm ifTrue: [sourceForm depth].
		halftoneForm isForm ifTrue: [halftoneForm depth].
		combinationRule.
		colorMap ifNotNil: [colorMap class]}].
	^ self primCopyBits
===================================

Then in a workspace you can start/stop the data collection:

===================================

"start"
BitBltStats := Bag new

"stop"
BitBltStats sortedCounts inspect. BitBltStats := nil

====================================

Here's what I go an Etoys image doing normal Etoys stuff:

23709->#(16 nil nil 3 nil)
20471->#(16 nil nil 3 Bitmap)
7852->#(16 32 nil 34 nil)
2961->#(16 16 nil 3 nil)
1181->#(16 1 nil 25 Bitmap)
958->#(16 16 nil 25 nil)
702->#(16 1 nil 3 Bitmap)
702->#(16 16 nil 1 nil)
702->#(16 1 nil 1 Bitmap)
339->#(16 4 nil 25 Bitmap)
190->#(32 nil nil 3 nil)
190->#(16 2 nil 25 Bitmap)
42->#(2 2 nil 3 nil)
40->#(32 32 nil 3 nil)
18->#(8 1 nil 25 Bitmap)
9->#(32 8 nil 3 Bitmap)
5->#(16 16 nil 33 Bitmap)

 26624->#(16 nil nil 3 Bitmap)
 10860->#(16 nil nil 3 nil)
 2557->#(16 16 nil 3 nil)
 2068->#(16 32 nil 34 nil)
 1612->#(16 16 nil 25 nil)
 932->#(16 1 nil 25 Bitmap)
 822->#(16 1 nil 3 Bitmap)
 822->#(16 16 nil 1 nil)
 822->#(16 1 nil 1 Bitmap)
 343->#(1 16 nil 1 Bitmap)
 343->#(1 1 nil 33 Bitmap)
 343->#(1 16 nil 3 Bitmap)
 70->#(16 4 nil 25 Bitmap)
 45->#(32 nil nil 3 nil)
 26->#(16 2 nil 25 Bitmap)
 14->#(8 1 nil 25 Bitmap)
 7->#(32 8 nil 3 Bitmap)
 1->#(16 16 nil 33 Bitmap)

If using Smalltalk tools (System Browsers etc), it looks a bit different:

 39350->#(16 32 nil 34 nil)
 23318->#(16 nil nil 3 nil)
 1872->#(16 16 nil 3 nil)
 1512->#(16 nil nil 3 Bitmap)
 794->#(16 16 nil 25 nil)
 634->#(16 1 nil 25 Bitmap)
 624->#(16 1 nil 3 Bitmap)
 624->#(16 16 nil 1 nil)
 624->#(16 1 nil 1 Bitmap)
 73->#(32 32 nil 3 nil)

Might be interesting to see how other images use it. And maybe add in some instrumentation to measure actual time spent.

For Etoys and Scratch in particular, WarpBlt is also rather important.

- Bert -




More information about the Vm-dev mailing list