|
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
- 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).
- Dann wird das Anzahl der Schleifen geschätzt, damit die Laufzeit größer als 10.000 msec ist.
- 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 | 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 |
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 | Bench00 | Bench01 | Bench02 | Bench03 | Bench04 | Bench05 |
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
|