|
BM Benchmark Suite
Version: 0.51
Datum: 21.05.2006
System: different
Programming language: various
Author: Marco Vieth
Download.
Purpose / Description
BMbench is a collection of simple benchmarks in different programming languages.
It is a synthetic benchmark which means that it does not represent real workload.
It allows to compare the performance of different languages, different implementations of the same language and maybe the same language on different operating systems.
The benchmark consists of up to 6 simple computations/algorithms (n = 1000000)
- 0: (sum of 1..n) mod 65536 (small integer; 16 bit, if available)
- 1: (sum of 1..n) mod 65536 (machine type integer; 32 bit preferred)
- 2: (sum of 1..n) mod 65536 (floating point; 64 bit double preferred)
- 3: Sieve of Eratosthenes: Number of primes below n/2 (bit array preferred; even numbers also stored)
- 4: n-th pseudo random number from generator by Raj Jain
- 5: (n=n/500): n over n/2 mod 65536 (Pascal's triangle)
All benchmarks are programmed in the "best" known way to me which means:
- They use the same (optimized) algorithm
- They are performant (hopefully)
(Since I do not know all the programming languages very well, there may be some optimizations, if you find some, please send me a note!)
- They should be robust to optimizations (except for loop unrolling)
- Results are used and checked after execution
- Number of loops not a constant
- Loop unrolling should not be used
It is implemented self-measuring: It reports elapsed time reported by functions available in the programming language.
It is implemented self-calibrating:
- For every benchmark test the workload (number of loops) is doubled until the elapsed time is greater than 1001 ms (1 ms more than one second because some timing functins have a accuracy of 1 second only).
- Then the number of loops is estimated so that the elapsed time will be greater than 10000 ms.
- The estimated elapsed time for 10 loops is reported as result.
Please report any bugs!
Any comments are welcome.
---
Files in this package
Status: development status for every benchmark test, +=ok, -=problems, .=not implemented)
Type: main data types used
- ? = unknown
- T = Bit
- B = Byte
- S = Short (16 bit)
- I = Integer (32 bit)
- L = long integer (any number of bits)
- D = Double (e.g. 64 bit)
File | Status | Type | Description |
00readme.txt | | | readme |
00results1.html | | | Benchmark results (HTML) |
00results1.xls | | | Benchmark results (Excel) |
00results1_log_linux04.txt | | | Benchmark measurement log v0.4 (Linux) |
00results1_log_linux05.txt | | | Benchmark measurement log v0.5 (Linux) |
bmbench1.abap | .+++++ | ?IDTII | ABAP/4 for SAP R/3 4.x |
bmbench1.awk | ++++++ | DDDDDD | AWK for gawk |
bmbench1.bas | --+... | ?????? | BASIC for Locomotive BASIC or bwbasic (Bywater BASIC Interpreter) |
bmbench1.bash | ++++++ | ?????? | Shell script for bash, zsh |
bmbench1.bc | .+.... | DDDDDD | BC for bc (arbitrary precision calculator, no timing) |
bmbench1.c | ++++++ | SIDTII | C for gcc, Microsoft C, Borland C (bcc), ... |
bmbench1.cpp | ++++++ | SIDTII | C++ for g++, Microsoft C++, ... |
bmbench1.cs | ++++++ | IIDBII | C# for Mono, Microsoft C# .NET |
bmbench1.f | ++++++ | SID?II | Fortran for g77 or f2c |
bmbench1.fs | .+.... | ?????? | Forth for gforth (to do) |
bmbench1.html | | ?????? | HTML page to start JavaScript from browser |
bmbench1.java | ++++++ | SIDTII | Java |
bmbench1.js | ++++++ | IIDIII | JavaScript for Browsers, Rhino, NGS (has integer), JScript, DMDscript |
bmbench1.lisp | ++++++ | IIDIII | Lisp for clisp |
bmbench1.mi | ++++++ | SIDTII | Modula-2 for mocka |
bmbench1.p | ++++++ | SIDTII | Pascal for gpc, p2c |
bmbench1.pl | ++++++ | IIDIII | Perl for Perl 5 |
bmbench1.pl4 | ++++++ | DDDDDD | Perl for old Perl 4 (no Integer available) |
bmbench1.py | ++++++ | SLDIII | Python for python |
bmbench1.st | ++++++ | ILDBDI | Smalltalk for gst (I only 30 bit) |
bmbench1.tcl | ++++++ | IIDIII | Tcl for tclsh |
bmbench1_java.html | | ?????? | HTML page to start Java from browser (as an applet, not used) |
bmbench1_sto.bas | --+-.. | ?????? | BASIC for Star Office 5.2 |
bmbench1.vb | ++++++ | SIDBII | Visual Basic for Microsoft Visual Basic .NET 2003 |
bmbench1_vba.bas | .-.... | ?????? | VBA (Visual Basic for Applications, e.g. Excel) |
run_bench1.sh | | | Shell script to run tests under UNIX (e.g. Linux) |
run_bench1_misc.sh | | | Another shell script |
run_bench_browser1.sh | | | Shell script to run browser tests under UNIX (e.g. Linux) |
Other languages:
- gpp -- GNU C++ Compiler
- gcj -- The GNU Java Compiler
- clisp -- A Common-Lisp interpreter
- m4 -- GNU m4
- mtc -- Modula-2 / C Converter
- gst -- GNU Smalltalk
BM Results
Language | Bench00 | Bench01 | Bench02 | Bench03 | Bench04 | Bench05 |
(awk): | 9166 | 9166 | 8333 | 370000 | 37500 | 130000 |
(Basic): | 450000 | -1 | 440000 | -1 | -1 | -1 |
(bc): | 200000 | 200000 | 200000 | 200000 | 200000 | 200000 |
(C): | 75 | 51 | 215 | 363 | 632 | 328 |
(C): | 20 | 20 | 40 | 114 | 357 | 102 |
(Fortran): | 103 | 74 | 196 | -1 | 714 | -1 |
(Fortran): | 20 | 20 | 40 | -1 | 677 | -1 |
(Fortran): | 20 | 20 | 40 | -1 | 676 | -1 |
(Java): | 1335 | 552 | 767 | 2633 | 3554 | 3750 |
(Java): | 20 | 20 | 208 | 526 | 594 | 102 |
(Java): | -1 | 39 | 61 | 521 | 584 | 102 |
(JavaScript): | 2916 | 2812 | 3125 | 9166 | 10000 | 8333 |
(Modula-2): | 51 | 62 | 131 | 673 | 737 | 176 |
(Pascal): | 20 | 20 | 61 | 472 | 354 | 286 |
(Pascal): | 200000 | 200000 | 200000 | 200000 | 200000 | -1 |
(Perl4): | 7500 | 7500 | 7500 | 27500 | 35000 | 25000 |
(Perl): | 5614 | 5591 | 5700 | 19704 | 23262 | 17170 |
(Python): | 25646 | 25684 | 10340 | 24626 | 25652 | 28918 |
(Tcl): | 10353 | 10408 | 11148 | 43310 | 30835 | 44360 |
MV, 21.05.2006 23:08:32
|