obench.m: an Octave-based benchmark

obench.m is a simple Octave benchmark which performs the following timed tests:

The timings are added to provide an approximate indicator of how fast the system can run Octave. It's a long test (over an hour on an AMD Athlon 2100) which requires about 512MB to run properly. If you wish to try it simply download obench.m and type the following:

     octave -q obench.m

That's it! If you send me the output of the above command (which includes timings plus some info about your computer) I will add it to the table below. I've only tested obench.m with Linux and Windows (under Cygwin), but I think it should be platform-agnostic except for the gathering of system information, (if the program cannot gather the system info please just send the timings and relevant specs e.g. CPU/RAM/etc). I'm releasing the obench.m to the public domain and without any warranties whatsoever, but please only send me the results provided by the original version you downloaded from here.

You can reach me at marco@reimeika.ca. Thank you in advance for any contributions!

Benchmarks

As you will see the benchmark is sensitive to the version of Octave and underlying OS, but even for a given Octave version there may have been different compile-time options (the use of fftw, for example). However, it is also sometimes interesting to see how different versions of Octave compare on a given machine. Below is a table comparing my "standard test" setup (Octave 2.1.71, see below) with Octave 2.1.73 and 2.9.4 running under Knoppix 5.0.1 (all times in seconds):

System FOR loops Integration FFT Simple ops. Complex ops. Total
Quantian/Octave 2.1.71
AMD Opteron 275 x 2
(quad-core)
2.19 GHz
1024 KB cache
16 GB RAM
(4 GB avail.)
578.60 681.36 199.65 343.26 446.71 2249.57
Knoppix/Octave 2.1.73
AMD Opteron 275 x 2
(quad-core)
2.19 GHz
1024 KB cache
16 GB RAM
(4 GB avail.)
350.69 412.06 326.81 187.70 432.19 1709.45
Knoppix/Octave 2.9.4
AMD Opteron 275 x 2
(quad-core)
2.19 GHz
1024 KB cache
16 GB RAM
(4 GB avail.)
334.92 481.10 309.26 187.74 414.81 1727.82

It's clear that version number, underlying OS and compile-time optimizations all play important roles regarding performance, and hence comparisons between different systems should be done with utmost care (if at all). It may be worthwhile to note that copying the entire live CD to memory (using [toram]) did not make a significant difference (which should be expected if I made the timing calculations properly).

Under certain standard conditions, however, the variations between runs are within 5% on a given system, usually less (so, although I'm writing timings to two decimal places only the two first digits are actually significant). To compare various computers the proper procedure is to boot the machine off Quantian Linux and then run the benchmark. For historical comparisons the same versions of Quantian and obench.m should be used (although I do not forsee changing the timed obench.m benchmarks ever again).

My "standard test" is running [octave -q obench.m] on a freshly booted instance of Quantian 0.7.9.1 (the version number is important). Those values are noted in red and have an associated "performance index". Timings for other systems are shown, but are not really comparable. If you send me your benchmark results I will add them to the table below, but system performance will be noted only if you run it as specified above (in which case please make that clear!)

The following graph summarizes the results, while the table below it shows the details (the order of the bars on the graph corresponds to the order of the entries in the table, only standard system performance is shown):

timings graph

System FOR loops Integration FFT Simple ops. Complex ops. Total Performance
Linux/Octave 2.1.71
AMD Athlon XP 2100+
1.74 GHz
256 KB cache
512 MB RAM
722.62 1175.68 341.34 1125.76 1482.12 4847.52 1
Linux/Octave 2.1.71
AMD Opteron 275 x 2
(quad-core)
2.19 GHz
1024 KB cache
16 GB RAM
(4 GB avail.)
578.60 681.36 199.65 343.26 446.71 2249.57 2.15
Linux/Octave 2.1.71
Intel Centrino Duo
(dual-core)
2.16 GHz
4096 KB cache
2 GB RAM
354.70 588.85 185.48 264.81 387.14 1780.98 2.72
Linux/Octave 2.1.71a
AMD Athlon XP 2600+
1.91 GHz
512 KB cache
512 MB RAM
668.63 1058.28 318.79 1039.24 920.04 4004.99 1.21
Linux/Octave 2.1.71
AMD Athlon 64 3400+
2.39 GHz
512 KB cache
2 GB RAM
542.03 658.71 205.66 333.34 457.74 2197.47 2.21
Linux/Octave 2.1.71
AMD Opteron 175
(dual-core)
2.21 GHz
1024 KB cache
2 GB RAM
563.87 674.79 204.26 345.65 448.61 2237.18s 2.17
System FOR loops Integration FFT Simple ops. Complex ops. Total Performance
Linux/Octave 2.1.71
Intel Pentium 4
2.41 GHz
512 KB cache
512 MB RAM
571.28 1264.10 381.08 451.17 777.20 3444.83 1.41
Linux/Octave 2.1.71
Intel Pentium 4
3.07 GHz
512 KB cache
512 MB RAM
742.62 1126.95 314.96 394.06 661.56 3240.11 1.50
Linux/Octave 2.1.71
Intel Pentium 4 (HT)
3.07 GHz
512 KB cache
512 MB RAM
774.84 1119.65 316.74 395.17 649.19 3255.59 1.49
Linux/Octave 2.1.71
Intel Pentium 4 (HT)
2.99 GHz
2 MB cache
512 MB RAM
855.48 1036.80 259.91 412.19 607.55 3171.94 1.53
Linux/Octave 2.1.71
AMD Sempron 3100+
1.80 GHz
256 KB cache
512 MB RAM
706.92 920.01 260.57 354.11 758.28 2999.89 1.62
System FOR loops Integration FFT Simple ops. Complex ops. Total Performance
Linux/Octave 2.1.73
AMD Athlon 64 3800+b
(dual core)
2.00 GHz
512 KB cache
1GB RAM
235.09 248.77 312.89 71.69 354.30 1222.74 N/A
MacOS X/Octave 2.1.73
(i386-apple-darwin8.8.1)
Intel Core 2 Duo
2.33 GHz
4096 KB cache
2 GB RAM
306.79 393.23 328.61 67.75 333.84 1430.24 N/A
Linux/Octave 2.1.57
Intel Xeon x 2 (HT)
2.79 GHz
1024 KB cache
2 GB RAM
326.05 321.36 541.63 391.14 615.74 2195.93 N/A
Linux/Octave 2.1.50
AMD Athlon 64 3000+
2.00 GHz
512 KB cache
512 MB RAM
653.05 325.26 610.24 375.96 628.25 2592.75 N/A
Linux/Octave 2.1.50
AMD Athlon XP 2800+
2.07 GHz
512 KB cache
512 MB RAM
699.46 350.91 675.68 1024.83 949.88 3700.76 N/A
System FOR loops Integration FFT Simple ops. Complex ops. Total Performance
Linux/Octave 2.1.35
Intel Pentium III
701 MHz
256 KB cache
896 MB RAM
3085.33 1157.39 2927.58 3231.76 3838.71 14240.77 N/A
WinXP/Octave 2.1.72a
AMD Athlon XP 2600+
1.91 GHz
512 KB cache
512 MB RAM
1842.05 3325.64 433.66 996.81 799.73 7397.89 N/A
Linux/Octave 2.1.72
AMD Athlon XP 2100+
1.74 GHz
256 KB cache
512 MB RAM
353.40 447.90 641.29 1179.34 1536.80 4158.73 N/A
Linux/Octave 2.1.73
AMD Duron
1.30 GHz
64 KB cache
512 MB RAM
579.92 622.57 683.40 362.48 1931.80 4180.16 N/A
Linux/Octave 2.1.73c
Intel Pentium D
(dual-core)
2.80 GHz
1024 KB cache
1 GB RAM
237.73 617.92 178.84 465.71 745.88 2246.07 N/A
System FOR loops Integration FFT Simple ops. Complex ops. Total Performance
Linux/Octave 2.1.73d
Mobile AMD Sempron 3400+
1.80 GHz
256 KB cache
1 GB RAM
359.05 336.46 261.52 145.20 559.98 1662.21 N/A
Linux 2.6.20.4/Octave 2.1.73e
AMD Athlon64 X2 5000+
(dual core)
2.61 GHz
512 KB cache
2 GB RAM
205.29 210.14 171.91 97.27 299.49 984.09 N/A
Linux 2.6.20.4/Octave 2.9.12e
AMD Athlon64 X2 5000+
(dual core)
2.61 GHz
512 KB cache
2 GB RAM
199.52 586.06 119.48 99.23 296.59 1300.88 N/A
Linux 2.6.20-16/Octave 2.9.9f
Intel Pentium 4 (HT)
2.60 GHz
512 KB cache
1 GB RAM
396.89 1123.42 313.61 245.54 702.01 2781.47 N/A
Linux 2.6.24-10/Octave 2.9.12g
Intel Core2 Duo
2.00 GHz
4096 KB cache
2 GB RAM
199.90 642.79 126.60 108.36 410.10 1487.74 N/A

aFor these two tests the same machine was used. Cygwin was set up under Windows XP and then Octave was installed. The machine was rebooted and obench.m executed in the usual manner (the procedure was repeated twice with the better run shown, albeit timings were again well within 5%). For the Linux test the same machine was booted off a live Quantian DVD (version 0.7.9.1).

bOctave compiled with Gentoo amd64 against blas-atlas. Compiler flags for the entire system are:
CFLAGS="-march=athlon64 -msse3 -O2 -pipe"
Thanks Douglas!

cDebian 64 bits on a Pentium D. Under Debian amd64 atlas is not working, so I'm using blas and lapack alone, I think that's why "simple matrix operations" are so slow. Thanks Sebastian!

dRun took place under Kubuntu Feisty Fawn. Thank you Dave!

eBest of two runs (one pair with Octave 2.1.73, the other with 2.9.12). Under Debian Linux. Thanks Dmitry!

fHP A250N. Thanks Daniel!

gHP 6710s notebook/kubuntu 7.10. Thanks David!

A quick note regarding Quantian

To burn the Quantian DVD I had to use the following command (as root):

nice -20 growisofs -use-the-force-luke=dao -dvd-compat -Z /dev/dvd=Quantian_0.7.9.1.iso -speed=2

Upon booting up the machine I encountered the following error after pressing [Enter] at the boot prompt:

Kernel panic -- not syncing : VFS : unable to mount root fs on unknown-block(1,0)

This seems to be a bug in the Quantian .iso. Fortunately the fix is simple: instead of [Enter] type [knoppix lang=us] and then [Enter] at the boot prompt and all is well again. This will probably get fixed in future ISO images (which will not be considered as a standard system).

Last updated: 16/March/2008
Return to the [index]