Benchmarko Logo
Benchmarko Logo
Home
Projects
CPCEMU
Software
Download
Contact
Links

German
 
back

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:

  1. 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).
  2. Then the number of loops is estimated so that the elapsed time will be greater than 10000 ms.
  3. 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 Bench00Bench01Bench02Bench03Bench04Bench05
(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