Benching #Smalltalk vs Squeak

goran.krampe at bluefish.se goran.krampe at bluefish.se
Mon Nov 24 08:51:53 UTC 2003


Hi all!

This weekend I installed .Net 1.1 runtime and Mono-0.28 on my XP laptop.
Then I downloaded SharpSmalltalk and tried the benchmarks. Also ran the
benchmarks on my 3.7alpha image using the latest Win32 VM 3.6.2. I
include the results below.

By an untrained eye it looks like Mono is much slower than MS runtime
(but note that I don't know if I should run mono using some neat
switches or anything, I just guessed on "mono" :)) - but I still find it
nice that it works at all.

Also - the MS runtime + SharpSmalltalk has pretty decent numbers
compared to Squeak. Half the bytecode speed but faster on sends (though
I assume tinyBenchmark is only a hint).

If we look at SlopStone (I just used the "Benchmark" package on SM - not
sure if it is the same code that SharpSmalltalk includes in its
download, but I guess it is) it seems that .Net shines on adding floats
(11 times faster), creating objects (7 times faster) and evaluating
blocks (31 times faster).

Of course - these numbers look "suspiciously good". :) Smopstone I can't
make heads or tails of - and the printouts aren't the same so perhaps
the tests have changed too.

regards, Göran
-----------------------------------------------

"Below is mono 0.28 running the Benchmark previously compiled using
#St."
C:\SharpSmalltalk\Source\Examples>mono Benchmarks.exe
18264840 bytecodes/sec; 834786 sends/sec

Starting benchmarks with repetition count = 16000.

1000s    time    1000s of
itera-   sec-    iterations   slop-
tions    onds    per sec      stones   explanation

3808     2.144     1776     0.269109000452284     add integers
544     0.41     1327     5.52845528455284     add floats
960     0.16     6000     6.80272108843537     access strings
320     0.181     1768     5.02260170768458     create objects
160     0.16     1000     9.34579439252336     copy objects
480     0.18     2667     6.27450980392157     perform selectors
896     0.491     1825     2.52050725208448     evaluate blocks

640     0.32213667215772     1986     3.57840613185554     geometric
mean

Benchmarks complete.


Starting benchmarks with repetition count = 5.

time in    smop-
seconds    stones    explanation

2.514     6.2788385043755     generating fractonaccis
0.52     10.7980769230769     generating primes
2.704     5.71560650887574     generating strings
1.032     5.65406976744186     forming sets
1.742     14.7502870264064     sorting strings

1.44750685946015     7.97792478076974     geometric mean

Benchmarks complete.
---------------------------------------------------
"Below is running Benchmark using .NET 1.1"
C:\SharpSmalltalk\Source\Examples>Benchmarks.exe
49928103 bytecodes/sec; 6900998 sends/sec

Starting benchmarks with repetition count = 16000.

1000s    time    1000s of
itera-   sec-    iterations   slop-
tions    onds    per sec      stones   explanation

3808     0,200288     19013     2,8807002764504     add integers
544     0,0200288     27161     113,170368003408     add floats
960     0,050072     19172     21,737405618902     access strings
320     0,0300432     10651     30,2594566854033     create objects
160     0,0400576     3994     37,3294232006845     copy objects
480     0,200288     2397     5,63893875172692     perform selectors
896     0,0400576     22368     30,8947380964781     evaluate blocks

640     0,0569353838041144     11234     20,2463874997436     geometric
mean

Benchmarks complete.


Starting benchmarks with repetition count = 5.

time in    smop-
seconds    stones    explanation

0,6909936     22,8439163546522     generating fractonaccis
0,1802592     31,1495890362323     generating primes
0,75108     20,577035735208     generating strings
0,75108     7,76881290941045     forming sets
0,7110224     36,1381019782218     sorting strings

0,549193550571352     21,0273788401325     geometric mean

Benchmarks complete.
----------------------------------------------------
"0 tinyBenchmark (3 times) using Win32 VM 3.6.2, 3.7a-5548"

 '125613346 bytecodes/sec; 4026448 sends/sec'
 '125244618 bytecodes/sec; 4019019 sends/sec'
 '125000000 bytecodes/sec; 4030172 sends/sec'

"SmopstoneBenchmark run (same VM, image)"



Starting benchmarks with repetition count = 1.

time in    smop-
seconds    stones    explanation

0.499     6.32665330661323     generating fractonaccis
0.037     30.35135135135135     generating primes*
0.067     16.28358208955224     generating and parsing streams
0.187     16.52941176470588     generating strings
0.048     24.3125     forming sets
0.16     32.11875     sorting strings
0.264     21.2159090909091     sorcerer's apprentice*

0.1247048670491762     18.8836979394353     geometric mean*

Benchmarks complete.

*** Caution ***
2 test of this benchmark (marked at '*') is intended to test the
efficiency 
of recursively calling a block, that it isn't supported by this VM.
So the result would be fairly pointless.

"SlopstoneBenchmark run (same VM, image)"

Starting benchmarks with repetition count = 16000.

1000s    time    1000s of
itera-   sec-    iterations   slop-
tions    onds    per sec      stones   explanation

3808     0.129     29519     4.47263330984261     add integers
544     0.222     2450     10.21021021021021     add floats
960     0.042     22857     25.91512795594428     access strings
320     0.212     1509     4.28816466552316     create objects
160     0.102     1569     14.66006963533077     copy objects
480     0.107     4486     10.55525013743815     perform selectors
896     1.243     721     0.995630780992342     evaluate blocks

640     0.1659031767327073     3855     6.94824454628703     geometric
mean

Benchmarks complete.



More information about the Squeak-dev mailing list