the rulerMarks and flowerMarks page

rulerMarks 97 and flowerMarks 97

THESE ARE a couple of benchmark routines I use to test new machines to gauge how fast they are (hey, techies are just like that, OK?)
They make no claim to test processors thoroughly, and no attempt has been made to equalise other factors across these widely different platforms (though all machines except the Acorns ran some sort of Unix). But they do have one advantage over many benchmarks: they are both programs I've actually wanted to use and which I found horribly slow on the machines I had at the time (the ones with benchmarks defined as 1).
rulerMarks 97 contains only integer code, whereas flowerMarks 97 contains mostly floating-point. The flowerMarks benchmark has quite a large dataset and so likes big caches and fast memory systems (see P2/400 vs Celeron 500) whereas rulerMarks and its data will fit in L1 cache on any modern CPU.
OK, I admit it, not all these cool toys are on my desk: the Alpha and Origin 2000 results were contributed by an astrophysicist friend of mine... all the nice Sun kit, the nicer HP and the Origin 200 (which is dual-processor, though the benchmark only exercises one) are on my brother's desk though.

Results

Machine CPU MHzrulerMarks (Integer)flowerMarks (FP)
Time/srM 97Time/sfM 97
Acorn A540 ARM3 25*207.11 def 1  
Acorn RiscPC ARM6 33 146.25 1.4819.00 def 1
Acorn NC ARM7500FE 40 112.83 1.8 46.64 17.6
Electric Imp ARM Cortex M3120 30.69 6.7  
Acorn RiscPC StrongARM 200 17.26 12.0 86.30 9.5
  ARM Cortex R4320 7.96 26.0  
  ARM Cortex M7400 5.24 39.5  
Motorola Droid ARM Cortex A8550 4.12 50.2 4.43 185.0
  i386SX 251,176.85 0.2  
  i486DX2 66 53.88 3.8 31.11 26.3
Dan Pentium 90 24.38 8.5 11.80 69.2
  Pentium 133 23.96 8.6 5.95 137.6
  Pentium MMX233 9.90 21.0 3.43 239.0
AST Pentium Pro200 10.70 19.4 3.17 258.0
Dell Pentium II 266 7.95 26.0 2.32 353.0
  Pentium II 350 6.07 33.8 1.74 470.7
  Pentium II 400 5.43 38.1 1.56 525.0
Dell Celeron 500 6.47 32.0 1.57 521.7
  Pentium III e600 4.39 47.1 1.11 737.8
Dell Pentium III eb733 3.79 54.6 0.721,137.5
Dell Pentium III e800 **2.92 70.9**0.811,009.9
  Pentium III eb1,000 2.43 85.2 0.711,153.5
  Pentium IV Xeon3,066 1.66125.5 0.213,900.0
  Celeron 743 (Core 2)1,300 1.321157.0 0.2253,640.0
  Core 2 Duo E66002,400 0.530391.0 0.0968,500.0
Apple Mac Pro Xeon 5160 (Core 2)3,000 0.46 450.0 0.0711,700.0
  Xeon 5520 (Core i7)2,266 0.522 397.0 0.0869,507.0
  Core i3-21003,100 0.377 549.0 0.07011,700.0
  Core i7-39303,800 0.258 802.0 0.048716,900.0
  VIA C7 600 8.48 24.4 2.26 362.0
  Athlon T'bird 850 **2.45 84.5**0.741,105.3
  Athlon 2200+ 1,800 **1.18 175.5**0.392,100.0
  Athlon XP 2500+1,833 1.55 134.00.312,600.0
  Athlon XP 3200+2,200 1.35 153.50.243,400.0
  Athlon64 X2 4400+2,200 1.47 140.90.155,460.0
  Opteron 2702,000 0.98 211.00.174,800.0
  Opteron 2502,400 0.72 288.00.155,460.0
IBM RS6000 PowerPC 604e233 7.44 27.8 3.27 250.5
Apple Imac PowerPC G4 7002.8273.4 0.91 900.0
Apple MacintoshPowerPC G51,8001.18175.50.263,150.0
SparcStation 5 microSparc 70 *42.60 4.9  
SparcStation 20superSparc 50 *43.18 4.8  
Ultra 1 ultraSparc ?170 16.51 12.5 3.97 206.3
Ultra 5 ultraSparc IIi270 8.24 25.1 2.25 364.0
Ultra 10 ultraSparc IIi360 4.66 44.4 1.40 585.9
Ultra E250 ultraSparc IIi400 4.49 46.1 1.27 644.9
HP 9000 D220 PA-7300LC 132 19.86 10.4 4.17 196.4
HP Visualize B180LPA-7300LC180 14.59 14.2 2.87 285.0
DEC 3000 AXPAlpha 21064125 *32.31 6.4  
DEC Multia Alpha 21066166 44.58 4.6 22.51 36.4
  Alpha 21164300    5.81 141.0
  Alpha 21164600 *6.20 33.4  
SGI O2 MIPS R10000250 8.13 25.5 1.72 476.2
SGI Origin 200 MIPS R10000180 9.95 20.8 1.67 490.4
SGI Origin 2000MIPS R10000195 11.91 17.4 1.22 677.0
def 1: defined as 1. All other benchmarks are relative to this system.

* interpolated from rulerMarks 95 times (a very similar but less optimised ruler program). Conversion factor is t97 = t95/3.404

** Windows machines with Visual C++ 6

The benchmark programs

rulerMarks is (part of) a program which calculates the longest Golomb ruler achievable with eleven marks. An ordinary ruler lets you measure one unit in many places: for instance you can measure 1cm between 0cm and 1cm, between 1cm and 2cm, and so on. Golomb's question was, how few marks can you get away with and still be able to measure every integer distance up to, say, 20? Or, put another way, what distance can you get up to with, say, 11 marks? The best brute-force search method for answers to this, involves lots of bitwise logical operators.

flowerMarks is a colour quantisation program, which takes a 24bpp image input and calculates the optimal 16-entry palette. I didn't write this program! -- the bit that does all the work comes from a program called GIMP, which is GPL'd. There's lots of hairy FP code in it for taking a collection of weighted points in 3-space and finding the vector of minimum angular momentum. Or something.

Downloading and running

Just click here [350K], which gives you a gzipped tar file. ruler97 and flower97 are each single C files, which are ANSI-compliant and should compile on just about anything. Most of the archive is taken up with the input file used by flower97: if you're interested, it's a RiscOS 32bpp sprite file of a photo I took of a field of sunflowers somewhere near Vouvray in France.
These programs have not been tested on big-endian machines, but should work. If flower97 reports "image size 464x324" and "60246 colours found" then everything is probably fine.
(K) All Rites Reversed -- Copy What You Like