Benchmarkings sind genormte Mess- und Bewertungsverfahren, mit deren Hilfe man die Leistung von EDV-Systemen oder Systemklassen ermitteln und diese nach bestimmten Kriterien miteinander vergleichen kann. Bekannt sind die Benchmark-Tests für die Hardware-Leistung bei Computersystemen. Benchmarks werden aber ebenfalls verwendet, um die Leistung von Programmiersprachen, mithin Interpretern sowie Compilern und deren Laufzeitsystemen auf derselben Hardware zu vergleichen. Dann spricht man von einem Software-Benchmark. Ein Benchmark im Allgemeinen ist immer ein Programm, das ein (oft aus der Mathematik stammendes, aufwendiges) Problem löst. Beispiele sind das Lösen linearer Gleichungssysteme (LINPACK) oder die Berechnung von Mersenne-Primzahlen.
Es handelt sich um eine Serie von Anwendungen (z. B. neuronale Netze, finite Elemente, Videoenkodierung usw.), die in Integer-bezogene (SPECint) und Floatingpoint-bezogene (SPECfp)-Programme eingeteilt werden. Entsprechend bildet das Endergebnis der Tests immer zwei Zahlen, die die Leistung bezogen auf eine Referenzmaschine (Benchmark) angeben. Bei Spec2000 ist dies z. B. eine Sun UltraSparcIIi/256 MB. Hardware-Benchmarktests schließen traditionell nur CPU- und Speicherzugriffsleistung ein. Grafikkarte, Massenspeicher usw. werden nicht getestet.
Die SPEC-Aktualisierung erfolgte im August 2006: SPECcpu 2006. Eine neue Version ist in Planung. Hierfür wurde 2008 ein „SPEC CPU Benchmark Search Program“ gestartet.
Die bekanntesten Benchmarks sind:
In letzter Zeit hat sich der Fokus von Benchmarks erweitert. Insbesondere die Einbeziehung von Energieverbrauch als Metrik hat sich etabliert und findet in diversen SPEC- (z. B. SPECpower) und TPC-Benchmarks Anwendung.
Daneben wird sich damit auseinandergesetzt, wie man gegenwärtige Trends in der Informationstechnik (IT) mithilfe von Benchmarks erfassen kann. Beispielsweise gibt es momentan mehrere Projekte, die sich mit Cloud Benchmarking oder mit dem Benchmarken von Peer-to-Peer-Systemen beschäftigen.
Tabelle einiger Dhrystone-Werte als Beispiel für Hardware-Benchmarks:
Typ | Mikroprozessor | Betriebssystem | Compiler | Dhrystones/sec., no reg | Dhrystones/sec., reg |
---|---|---|---|---|---|
IBM PC/XT | 8088-4.77Mhz | PC/IX | cc | 257 | 287 |
VAX 11/780 | UNIX 5.2 | cc | 1515 | 1562 | |
Compaq PIII/450 | NT4 | TCC 3.1/286/287 | 71.428 | ||
Compaq PIII/450 | NT4 | wcc 10.5/-otexan-fp5 | 250.000 | ||
FMS AthlonXP1800 | SUSE 8.2 | gcc | 2.016.129 | ||
FMS AthlonXP1800 | SUSE 8.2 | gcc -O3 | 5.050.505 |
Software-Benchmarks dienen dazu, die Leistungsfähigkeit unterschiedlicher Programmiersysteme bezüglich der Ausführungsgeschwindigkeit zu vergleichen. Bei der Erstellung eines Software-Benchmarks wird derselbe Algorithmus in verschiedenen Programmiersprachen implementiert und die Ablaufzeiten der Programme untereinander verglichen. Dabei ist es erforderlich, Experten für die verschiedenen Programmiersprachen zusammenzubringen, die den Algorithmus möglichst optimal für die jeweilige Programmiersprache umsetzen zu können. Ein klassisches Beispiel für solche Benchmarks ist die Ackermannfunktion.
Anwendungs-Benchmarks dienen dazu, die Leistungsfähigkeit von Rechnersystemen beim Zusammenspiel aller Hardware- und Softwarekomponenten zu beurteilen. Dazu werden realitätsnahe Anwendungsszenarien erstellt. Die Laufzeit dieser automatisiert wiedergegebenen Anwendungsszenarien erlaubt einen einheitlichen Vergleich verschiedener Rechnersysteme. Auch wichtige Größen wie Energieverbrauch und Akkulaufzeit bei mobilen Geräten lassen sich hiermit vergleichbar ermitteln.
Beispiele für Anwendungsbenchmarks sind
Ist die verwendete Benchmark-Software bekannt, bietet das einen Spielraum für Manipulationen. In der Praxis können Gerätetreiber, Compiler oder auch Befehlssätze derart optimiert sein, dass gängige Benchmarks besonders schnell ablaufen.[4]