Squeak SmalltalkJoker Squeak Smalltalk : Image VM OS Application : prevnext Tiny Benchmarks JIT VSE VW Dolphin

Thanks for running these tests. Of course, tinyBenchmarks have lots
of flaws--they don't cover the entire space of Smalltalk operations
and the operation mix is certainly not typical of any real application.
But when we were building the Squeak VM, Dan said that they were
the only benchmarks he really cared about and it turns out that they
seem to be pretty good at predicting the overall performance of a
Smalltalk virtual machine.

Squeak does great for a simple bytecode interpreter. Ian knows much
more about this than I do, but I think you typically get a speedup of
1.5 or so with the simplest possible JIT just by eliminating the bytecode
dispatch. Cincom probably worked quite hard to get it up to 3x. The
factor of 10x in send performance is not at all surprising, given that
Squeak allocates a context object and copies over the arguments on
every non-trivial send, whereas Cincom uses a LIFO context cache most
of the time. I suspect the send tiny benchmark actually forces them
to spill contexts into the heap more than normal programs, so their
actual send performance may be more than 10x better than Squeak's.

I'm sure Cincom does much better on normal float arithmetic, but
Squeak's vector primitives probably outperform Cincom's normal float
arithmetic. Does Cincom support float vector operations?

Last I checked, Squeak was quite a bit faster than Python.

It depends on the application, of course, but I've found Squeak fast
enough for lots of "real" applications, including one that ran on a
circa 2000 Sharp PDA running at 66 MHz. The trick is to write
primitives to do the heaving lifting (e.g. JPEG decompression).

	-- John

Squeak 3.6
	Duron 1200/WinXP			110630942 bytecodes/sec; 3553521 sends/sec	
	Duron 1300/Linux	 		102073365 bytecodes/sec; 3369386 sends/sec
	P3 533MHz					52400000 bytecodes/sec; 1530000 sends/sec
	K6-266 W2K 				17611447 bytecodes/sec; 759008 sends/sec
	Cyrix 150MHz PR166/NT4		7944389 bytecodes/sec; 204545 sends/sec
	1.0 GHz P3 WinXP			108291032 bytecodes/sec; 3063725 sends/sec

1.0 GHz P3 WinXP VisualSmalltalk 3.1
	195,121,951 bytecodes/sec; 28,684,633 sends/sec

1.0 GHz P3 WinXP VisualWorks 5i.2
	248,062,015 bytecodes/sec; 32,210,422 sends/sec

1.0 GHz P3 WinXP Dolphin 5.1 Professional
	85,906,040 bytecodes/sec; 2,417,656 sends/sec