=== Top of the Swiki === Attachments ===
FAQ: Speed
Roughly speaking, how fast is Squeak?
Here are some benchmarks. Note that enchmark numbers for Squeak on some platforms can be different depending on whether the VM preference "Reduce CPU usage" is enabled or disabled
Windows NT4, SP5
PII/300MHz - Squeak 2.5 VM build 6 [6 Sep 1999]825,000 message sends/sec
13,850,000 bytecodes/sec
PII/300MHz - Squeak 2.6 VM rb1 [18 Oct 1999] -- using the updated "standard" #tinyBenchmarks809,000 message sends/sec
13,980,000 bytecodes/sec
PII/400MHz - Squeak 2.5 VM [30 Aug 1999]1,081,000 message sends/sec
17,550,000 bytecodes/sec
PII/400MHz - Squeak 2.6 VM rb1 [18 Oct 1999] -- using the updated "standard" #tinyBenchmarks1,058,000 message sends/sec
18,470,000 bytecodes/sec
[Note: standard Squeak benchmarks were adjusted to run for several seconds total: "28 benchFib" became "32 benchFib" and "1 benchmark" became "200 benchmark" in #tinyBenchmarks; I'm seeing rather inconsistent and unreasonable values of bytecodes/sec when I use the shorter running standard values]
Dwight Hughes
Göran Hultgren I can top that...
[Paolo Bonzini notes: well, if you multiply the result by 3/5, thus "normalizing" it to 300 MHz, you get roughly the same numbers as above. This page is not about "Look, I have this stunning $100,000 machine, Squeak running on it is faster than VW on a 486!"; it is about "how fast is Squeak on different architectures and comparable clocks" and about "How fast is it on a reference machine, in comparison to other interpreters". Results for PII/400MHz and Athlon/500MHz are completely useless IMHO]
Göran Hultgren I was only kidding, I agree with you fully. But it is also interesting to see how well different hardware performs, especially if you are wondering how much faster an Athlon really is. :-)
Win98/AMD Athlon500Mhz/Squeak2.6-11 Oct, update #1559):
1,492,447 message sends/sec;
22,284,122 byteecodes/sec
300MHz K6-2 under Linux, Squeak 2.7 VM/image
- 713,215 sends/sec
- 12,588,512 bytecodes/sec
This is a little slower than the 300Mhz PII/WinNT listed above. Not sure if it's due to AMD vs Intel or the Windows vs. Unix VM.
Lex Spoon
Windows 2000
Celeron/300MHz - Squeak 2.8 ChangeSet 2299 newest VM [6 Jun 2000]- 29878618 bytecodes/sec; 848561 sends/sec
(Andreas Kuckartz)
Mac G3
292 MHz G3, Squeak 2.5 VM (as of Aug 31, 1999):
- 943,000 message sends/sec
- 22,000,000 bytecodes/sec
John Maloney
500 MHz G3, Squeak 2.9alpha VM (as of Aug 7, 2000):
- 1,500,000 sends/sec
- 46,000,000 bytecodes/sec
RandalSchwartz
StrongARM
275MHz StrongARM in Corel NetWinder
- about 600,000 message sends/sec
- about 12,000,000 bytecodes/sec
Tim Rowledge
Sparc
25MHz SPARCstation IPX, Squeak 2.6 :-)
61,000 sends/sec
1,330,000 bytecodes/sec
Hans-Martin Mosner - no, Morphic isn't exciting on that machine...
IRIX
SGI O2 MIPS R5000 200 MHZ IP32 Processor Squeak 2.5
354,395 sends/sec
7462686 bytecodes/sec
Obviously, someone should update the IRIX VM
Speeds of other Smalltalks
For comparison I also ran the same adjusted benchmarks on some other Smalltalks, all on WinNT4Wsp5.
Dolphin Smalltalk Version 2.1: a modestly optimized bytecode interpreter VM (non-translating).
PII/300MHz 1,112,000 message sends/sec
17,240,000 bytecodes/sec
VisualWorks 3.0 NonCommercial -- translating VM, therefore no bytecodes are actually being run, but the performance ratio should be reasonably valid.
PII/300MHz 5,950,000 message sends/sec [7x Squeak 2.5]
81,800,000 bytecodes/sec [6x Squeak 2.5]
Smalltalk MT VC 1.5 Evaluation Version -- a fully compiled Smalltalk. AFAIK there is no dynamic translation being done (and certainly no bytecodes being run). Yes, those numbers are correct - whether they are also meaningful or not is another matter.
PII/300MHz 1,076,000 message sends/sec
128,000,000 bytecodes/sec
Dwight Hughes
GNU Smalltalk Version 1.7.4 -- pretty optimized but non-translating bytecode interpreter VM
PII/300MHz 1,011,000 message sends/sec
19,100,000 bytecodes/sec
and version 1.95, which has a stab at a translator to native code.
PII/300MHz 2,092,400 message sends/sec
41,500,000 bytecodes/sec
Paolo Bonzini