
Safari 3.1 has been released, bringing with it all the latest and great Webkit code. Even though the UI still sucks (at least on Windows; ever hear of native GUIs, Apple?)
I decided to benchmark the Javascript performance of the new Safari against its more immediate predecessor, 3.04. This testing was done on a Windows XP SP2 installation; a HP workstation with a Pentium 4 and 2GB of RAM.
As you can see in the table below, the JS engine has improved considerably since the last build, cutting the total time by more than half.
| Benchmark | Safari 3.1 (ms) | Safari 3.04 (ms) |
|---|---|---|
| Total | 5865.4 | 13525.2 |
| 3d: cube | 218.6 | 478.0 |
| 3d: morph | 197.0 | 818.6 |
| 3d: raytrace | 287.4 | 537.8 |
| access: binary-trees | 106.4 | 212.6 |
| access: fannkuch | 446.8 | 977.8 |
| access: nbody | 256.4 | 581.4 |
| access: nsieve | 134.2 | 584.0 |
| bitops: 3bit-bits-in-byte | 128.0 | 515.8 |
| bitops: bits-in-byte | 156.2 | 537.4 |
| bitops: bitwise-and | 212.4 | 450.0 |
| bitops: nsieve-bits | 162.6 | 819.0 |
| control: recursive | 146.8 | 315.2 |
| crypto: aes | 175.2 | 337.6 |
| crypto: md5 | 128.4 | 475.0 |
| crypto: sha1 | 156.0 | 518.6 |
| date: format-tofte | 262.6 | 390.6 |
| date: format-xparb | 415.6 | 672.0 |
| math: cordic | 271.8 | 847.0 |
| math: partial-sums | 287.4 | 387.6 |
| math: spectral-norm | 165.6 | 365.6 |
| regexp: dna | 334.6 | 531.2 |
| string: base64 | 190.4 | 453.2 |
| string: fasta | 290.6 | 628.2 |
| string: tagcloud | 203.2 | 340.8 |
| string: unpack-code | 234.2 | 312.6 |
| string: validate-input | 297.0 | 437.6 |
Here’s the raw data, if you so desire it.
Safari 3.04
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 13525.2ms +/- 0.6%
--------------------------------------------
3d: 1834.4ms +/- 4.8%
cube: 478.0ms +/- 5.5%
morph: 818.6ms +/- 8.8%
raytrace: 537.8ms +/- 6.1%
access: 2355.8ms +/- 2.1%
binary-trees: 212.6ms +/- 17.9%
fannkuch: 977.8ms +/- 1.1%
nbody: 581.4ms +/- 4.4%
nsieve: 584.0ms +/- 6.0%
bitops: 2322.2ms +/- 2.4%
3bit-bits-in-byte: 515.8ms +/- 2.7%
bits-in-byte: 537.4ms +/- 5.4%
bitwise-and: 450.0ms +/- 7.1%
nsieve-bits: 819.0ms +/- 3.1%
controlflow: 315.2ms +/- 12.5%
recursive: 315.2ms +/- 12.5%
crypto: 1331.2ms +/- 2.2%
aes: 337.6ms +/- 8.8%
md5: 475.0ms +/- 6.3%
sha1: 518.6ms +/- 3.2%
date: 1062.6ms +/- 5.1%
format-tofte: 390.6ms +/- 7.0%
format-xparb: 672.0ms +/- 5.4%
math: 1600.2ms +/- 3.3%
cordic: 847.0ms +/- 3.0%
partial-sums: 387.6ms +/- 4.2%
spectral-norm: 365.6ms +/- 9.8%
regexp: 531.2ms +/- 5.8%
dna: 531.2ms +/- 5.8%
string: 2172.4ms +/- 3.1%
base64: 453.2ms +/- 6.2%
fasta: 628.2ms +/- 5.1%
tagcloud: 340.8ms +/- 11.7%
unpack-code: 312.6ms +/- 10.7%
validate-input: 437.6ms +/- 5.4%
Safari 3.1
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 5865.4ms +/- 1.8%
--------------------------------------------
3d: 703.0ms +/- 11.3%
cube: 218.6ms +/- 15.4%
morph: 197.0ms +/- 22.7%
raytrace: 287.4ms +/- 10.1%
access: 943.8ms +/- 7.0%
binary-trees: 106.4ms +/- 19.8%
fannkuch: 446.8ms +/- 10.0%
nbody: 256.4ms +/- 4.2%
nsieve: 134.2ms +/- 12.8%
bitops: 659.2ms +/- 4.4%
3bit-bits-in-byte: 128.0ms +/- 6.5%
bits-in-byte: 156.2ms +/- 15.3%
bitwise-and: 212.4ms +/- 13.8%
nsieve-bits: 162.6ms +/- 16.1%
controlflow: 146.8ms +/- 17.9%
recursive: 146.8ms +/- 17.9%
crypto: 459.6ms +/- 11.7%
aes: 175.2ms +/- 21.4%
md5: 128.4ms +/- 16.3%
sha1: 156.0ms +/- 15.1%
date: 678.2ms +/- 4.4%
format-tofte: 262.6ms +/- 12.1%
format-xparb: 415.6ms +/- 7.1%
math: 724.8ms +/- 7.0%
cordic: 271.8ms +/- 10.7%
partial-sums: 287.4ms +/- 9.0%
spectral-norm: 165.6ms +/- 17.7%
regexp: 334.6ms +/- 7.7%
dna: 334.6ms +/- 7.7%
string: 1215.4ms +/- 4.5%
base64: 190.4ms +/- 13.3%
fasta: 290.6ms +/- 8.9%
tagcloud: 203.2ms +/- 13.4%
unpack-code: 234.2ms +/- 10.2%
validate-input: 297.0ms +/- 9.1%