|
obench.m: an Octave-based benchmarkobench.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!
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):
| 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: 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! |
|||||||
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]