Java Benchmark

Messen von Zeit- und Platzbedarf von Java ADTs

Java Benchmark
Das JDK ab Version 1.2 enthält einige Schnittstellen für abstrakte Datentypen, zum Beispiel Map für Verzeichnisse, Set für Mengen und List für Listen. Außerdem sind im JDK einige konkrete Implementierungen vorhanden. Über die Effizienz dieser Implementierungen wird aber relativ wenig in der Dokumentation ausgesagt.

Ziel dieser Aufgabe ist die Entwicklung einer Umgebung zum Messen des Zeit- und des Platzbedarfs für die unterschiedlichen Implementierungen aus dem JDK und anderen selbst entwickelten oder aus Fremdsoftware übernommenen Klassen. Es sollen für ATDs unterschiedliche Test gemacht werden, über die man einen Eindrück gewinnen kann, mit welcher Komplexität die einzelen Operationen wie einfügen, suchen, löschen, ... arbeiten.

Die Benchmark-Umgebung soll dabei mit der jeweiligen ADT-Implementierung auf einfache Weise parametrisiert werden können, so dass neue Implementierungen auch dynamisch dazugenommen werden können, ohne die Benchmark-Quellen neu zu kompilieren.

Die Benchmarks sollen so ausgelegt werden, dass die Anwendung selbständig die Länge der Testläufe und die Größe der Testfälle berechnet, und zwar unabhängig von der Hardware des Testrechners.

Die Resultate der Testfälle sollen grafisch aufbereitet werden. Die Grafiken sollen mit Hilfe von SVG erzeugt werden.

Programmiersprachen und Werkzeuge
JDK 1.4, frei verfügbare Klassen für die Java ADTs, SVG (z.B. mit Apache Batik Toolkit), Dom oder JDom für die SVG-Erzeugung.
2. Ansatz
Benchmarks und Tests in C
Umgebung
Java: plattform unabhängig, C: ANSI-C
Varianten
Die drei wichtigsten ADTs sind Listen, Mengen und Tabellen (maps). Für diese drei ADTs sollen in unterschiedlichen Aufgaben Benchmark-Umgebungen realisiert werden.

Neben den im JDK vorhandenen Implementierungen sollen mindestens eine einfach verkettete Liste und binäre Bäume verwendet werden, und zwar so, wie sie in der OOP-Vorlesung entwickelt wurden.

etc.
Zeitmessung und Platzmessung in Java ist nicht ganz so einfach wie in C. Die Zeiten können leicht durch just-in-time Compiler verfälscht werden, der Platzbedarf durch nicht angestoßene garbage collection. Hierfür gibt es aber in Java-Entwickerforen Tipps und Tricks.

Hauptnavigation