1 Einleitung
Der Siegeszug der Programmiersprache Java steht in engem Zusammenhang
mit der Möglichkeit mit ihr plattformunabhängige Programme für das
Internet zu entwickeln. Diese sind als Applets im Fenster
eines World Wide Web-Browsers ausführbar. Mit Applets lassen sich
nicht nur Web-Seiten interaktiver gestalten, sondern es ist möglich
beliebige Programme auszuführen. In Folge einer richtigen Java-Euphorie
sind deshalb auch in Java geschriebene Benchmark-Applets entstanden.
Es genügt der Abruf einer URL (Uniform Resource Locator) und schon
kann man die Leistungsfähigkeit seines eigenen Systems testen.
Im Folgenden sind die drei derzeit wichtigsten Java-Benchmarks aufgelistet:
- Linpack, von Jack Dongarra und Reed Wade,
ist schon lange als Fortran oder C/C++-Benchmark zu haben [Dong96],
und die Java-Version ist deshalb besonders ausgereift. Auch wenn der
direkte Vergleich mit den Leistungszahlen herkömmlicher Compiler schwierig
ist, ermöglichen die numerischen Tests den Performance-Vergleich verschiedener JVM.
- CaffeineMark
und der Java Performance Report ist der derzeit wohl am häufigsten
zitierte Test, wenn es um Java und die JVM geht. Auf die Ergebnisse
von CaffeineMark 2.5 geht der Abschnitt 3.6 ein.
- BenchBeans - von
Holger Reckter - ist ein weiterer
Benchmark, der versucht, alle Aspekte der Java-Performance, einschließlich
Grafik zu behandeln. 13 Einzeltests ermitteln Vergleichswerte für
Arithmetik, Grafik, Speicher-Allozierung, Methoden und Text.
Eine gute Übersicht aller WWW-Ressourcen zum Thema gibt es bei Jonathan
Hardwick.
Durch das Sammeln möglichst vieler Ergebnisse versuchen sämtliche
Web-Java-Benchmarks eine Vergleichsmöglichkeit verschiedener Rechnerplattformen
und Interpreter zu erreichen. Die Testbedingungen sind bei dieser
Vorgehensweise natürlich nicht immer klar festgelegt, und deshalb
sind die Ergebnisse auch nur eingeschränkt brauchbar. Zumindest läßt
sich so aber die Leistung einer JVM einordnen.
Um die Maschinenunabhängigkeit eines Java-Programms zu gewährleisten,
erzeugt der Compiler ein architekturneutrales Objektdateiformat. Dieser
Bytecode wird dann vom Java-Laufzeitsystem ausgeführt (vgl.
Kapitel 2). Er wird interpretiert, und dies bedingt, daß die Ausführgeschwindigkeit
langsamer ist, als die eines in C geschriebenen, übersetzten und gebundenen
Programms.
Ein Versuch diesen Nachteil auszugleichen sind sogenannte Just
in Time-Übersetzer (JITC), die den zu interpretierenden Java-Bytecode
direkt vor der Ausführung in nativen Code übersetzen und so auch Hardware-
oder systembedingte Vorteile nutzen können (vgl. dazu Abschnitt 4.2).
Diese Studienarbeit untersucht in Kapitel 3, die so zu erreichende
Leistungssteigerung gegenüber der einfachen Interpretation zu ermitteln.
1.3 Laufzeitintensive Anwendungen
Trotz ständiger Veränderungen beruht die Existenzberechtigung vieler
Computersysteme darauf, daß sie in der Lage sind, schnelle und genaue
numerische Berechnungen zu realisieren. Auch die in dieser Studienarbeit
ausgewerteten Benchmarks (vgl. Abschnitt 3.2 gehen deshalb von mathematischen
Objekten aus: Matrizen, Polynome und Listen und bewerten die Rechenzeit
für verschiedene Routinen, wie Matrixmultiplikation oder Sortieren
von Listen.
----------------------------------------------------------------
[home] [TOC] [next] [guestbook] [contact] (c) SM