Benchmarko Logo
Benchmarko Logo
Home
Projekte
CPCEMU
Software
Download
Kontakt
Links

Englisch
 
zurück

BM Benchmark Suite

Version: 0.51
Datum: 21.05.2006
System: verschiedene
Programmersprache: verschiedene
Author: Marco Vieth
Download.

Diese Seite wird bald aktualisiert! Bitte schauen sie so lange in die Beschreibung des Programmpakets.

 

 


 

Beschreibung

BMbench ist eine Sammlung einfache Benchmark-Tests in unterschiedlichen Programmiersprachen. Es ist ein synthetischer Benchmark, das bedeutet, daß er keine Anwendungslast repräsentiert. Er erlaubt den Vergleich der Performance von...

  • unterschiedlichen Programmiersprachen,
  • unterschiedlichen Implementierungen der gleichen Programmiersprachen
  • und möglicherweise der gleichen Sprache auf unterschiedlichen Betriebssystemen.

Der Benchmark besteht aus 6 einfachen Berechnungen / Algorithmen (n = 1000000)

  • 0: (Summe 1..n) mod 65536 (kleine Integer; 16 Bit, falls verfügbar)
  • 1: (Summe 1..n) mod 65536 (Maschinentyp Integer; 32 Bit bevorzugt)
  • 2: (Summe 1..n) mod 65536 (floating point; 64 Bit Double bevorzugt)
  • 3: Sieb des Eratosthenes: Anzahl Primzahlen kleiner als n/2 (Bit-Array bevorzugt; gerade Zahlen auch gespeichert)
  • 4: n-te Pseudo-Zufallszahl des Generators von Raj Jain
  • 5: (n=n/500): n über n/2 mod 65536 (Pascal'sches Dreieck)

 

Alle Benchmarks wurden in der "besten", mir bekannten bekannten Weise programmiert, das bedeutet:

  • Sie verwenden den gleichen (optimierten) Algorithmus
  • Sie sind performant (hoffentlich)
    (Da ich nicht alle Programmiersprachen sehr gut kenne, kann es zusätzliche Optimierungen geben. Wenn Sie etwas entdecken, schicken Sie mir bitte einen Verbesserunsvorschlag!)
  • Sie sollten zu den Optimierungen robust sein (außer der entrollenden Schleife)
    • Resultate werden nach Durchführung verwendet und überprüft
    • Zahl der Schleifen ist keine Konstante
    • Loop-Unrolling (Schleifen entrollen) sollte nicht benutzt werden


Die Tests sind selbstmessend und selbstkalibrierend:

  • Selbstmessend: Die Laufzeit (elapsed time) wird mit Funktionen gemessen, die die Programmiersprache bietet
  • Selbstkalibrierend
    1. Für jeden Benchmark-Test wird die Workload (Zahl der Schleifen) verdoppelt, bis die Laufzeit grösser als 1001 msec ist (1 msec mehr als eine Sekunde, weil einige TIMING-Funktionen nur eine Genauigkeit von 1 Sekunde haben).
    2. Dann wird das Anzahl der Schleifen geschätzt, damit die Laufzeit größer als 10.000 msec ist.
    3. Die geschätzte Laufzeit für 10 Schleifen wird als Resultat ausgegeben.

 

Status: Entwicklungsstatus für jeden Benchmark-Test, +=ok, -=Probleme, .=nicht implementiert)

Benutzte Datentypen in den jeweiligen Tests

  • ? = unbekannt
  • T = Bit
  • B = Byte
  • S = Short (16 Bit)
  • I = Integer (32 Bit)
  • L = long integer (beliebige Anzahl Bits)
  • D = Double (z.B. 64 Bit)

 

Datei Status Typ Beschreibung
00readme.txt Liesmich
00results1.html Benchmark-Ergebnisse (HTML)
00results1.xls Benchmark-Ergebnisse (Excel)
00results1_log_linux04.txt Benchmark-Meßprotokoll v0.4 (Linux)
00results1_log_linux05.txt Benchmark-Meßprotokoll v0.5 (Linux)
bmbench1.abap .+++++ ?IDTII ABAP/4 für SAP R/3 4.x
bmbench1.awk ++++++ DDDDDD AWK für gawk
bmbench1.bas --+... ?????? BASIC für Locomotive BASIC oder bwbasic (Bywater BASIC Interpreter)
bmbench1.bash ++++++ ?????? Shell-Skript für bash, zsh
bmbench1.bc .+.... DDDDDD BC für bc ("Arbitrary Precision Calculator", ohne Zeitmessung)
bmbench1.c ++++++ SIDTII C für gcc, Microsoft C, Borland C (bcc), ...
bmbench1.cpp ++++++ SIDTII C++ für g++, Microsoft C++, ...
bmbench1.cs ++++++ IIDBII C# für Mono, Microsoft C# .NET
bmbench1.f ++++++ SID?II Fortran für g77 or f2c
bmbench1.fs .+.... ?????? Forth für gforth (TODO!)
bmbench1.html ?????? HTML-Seite für Javascript im Browser
bmbench1.java ++++++ SIDTII Java
bmbench1.js ++++++ IIDIII JavaScript für Browsers, Rhino, NGS (mit Integer), JScript, DMDscript
bmbench1.lisp ++++++ IIDIII Lisp für clisp
bmbench1.mi ++++++ SIDTII Modula-2 für mocka
bmbench1.p ++++++ SIDTII Pascal für gpc, p2c
bmbench1.pl ++++++ IIDIII Perl für Perl 5
bmbench1.pl4 ++++++ DDDDDD Perl für altes Perl 4 (ohne "Integer")
bmbench1.py ++++++ SLDIII Python für python
bmbench1.st ++++++ ILDBDI Smalltalk für gst (Typ "I" nur 30 Bit)
bmbench1.tcl ++++++ IIDIII Tcl für tclsh
bmbench1_java.html ?????? HTML-Seite für Java-Applet im Browser
bmbench1_sto.bas --+-.. ?????? BASIC für Star Office 5.2
bmbench1.vb ++++++ SIDBII Visual Basic für Microsoft Visual Basic .NET 2003
bmbench1_vba.bas .-.... ?????? VBA (Visual Basic für Applikatonen, z.B. Excel)
run_bench1.sh Shell-Skript für Tests unter UNIX (Linux)
run_bench1_misc.sh Ein anderes Shell-Skript
run_bench_browser1.sh Shell-Skript für Browsertests unter UNIX (Linux)

 


 

Andere Programmiersprachen

  • 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

 


 

Benchmarkergebnisse (v0.5)

Hier einige Meßergebnisse in Millisekunden (ms), für jeweils 10 Durchläufe.

Athlon 1000, SuSE Linux 8.0

Sprache 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

 

Alte Ergebnisse (noch von v0.40)

Hier einige Meßergebnisse in Millisekunden (ms), für jeweils 10 Durchläufe.

Athlon 1000, SuSE Linux 8.0

Sprache Programm Bench00Bench01Bench02Bench03Bench04Bench05
AWK Gawk 3.0.4 27500 30000 610000 150000 250000
AWK Gawk 3.1.0 8333 9166 370000 37500 130000
BASIC bwbasic 2.20 pl 2 440000
BASIC StarOffice 5.2 310000
BC BC 1.04 4580
BC BC 1.06 4431
C Gcc 2.95.3 20010315 (-O0) 73 50 210 341 621 324
C Gcc 2.95.3 20010315 (-O2) 19 19 39 112 351 100
Forth GForth 0.5.0 279
Fortran G77 2.95.3 20010315 (-O0) 73 199 702
Fortran G77 2.95.3 20010315 (-O2) 20 40 660
Java Java 1.1.8 (Sun) 540 749 2542 3482 3683
Java Java 1.3.0 (IBM) 20 199 518 581 100
Java Guavac 1.2, Java 1.3.0 39 59 549 571 100
JavaScript Konqueror 3.0.0 366840
JavaScript Mozilla 6; Gecko/20020204 46793
JavaScript Netscape 4.79 22298 21736 62850 66800 41713
JavaScript Netscape 6.2.1; Gecko/20011126 44563 44785 83335 636220 42986
JavaScript NGS (js-0.2.5) 2916 2812 9166 9166 8333
JavaScript Rhino (1_5R3) 8329 8333 27666 193930 191860
Modula-2 Mocka 9903 52 49 128 631 721
Pascal Gpc 20011202 (-O2) 19 21 54 466 342 249
Perl Perl 5.005_03 5833 20000 21666 15000
Perl Perl 5.6.1 5529 5547 19253 22854 16785
Python Python 2.2 (-O) 24661 9964 24030 24951 32514
Smalltalk Gst 1.95.9
Tcl Tcl 7.6p2 75000 270000 270000 2030000
Tcl Tcl 8.3.4 10149 10975 42340 30275 42846

Alle Ergebnisse (bis auf die Browser-basierten) wurden im Single User Mode ermittelt.

Falls Sie Ergebnisse auf Ihrem System ermittelt haben, würde ich mich freuen, wenn Sie sie mir schicken.

MV


MV, 21.05.2006 23:09:22