Benchmarking von Bilddatenstrukturen Ralph Guderlei, Timo Tonn Universität Ulm Benchmarking von Bilddatenstrukturen – p. 1 Vorbetrachtungen • Benchmark: ”Something which can be used as a standard by which other things are judged or measured” Benchmarking von Bilddatenstrukturen – p. 2 Vorbetrachtungen • Benchmark: ”Something which can be used as a standard by which other things are judged or measured” • Objekte müssen vergleichbar sein Benchmarking von Bilddatenstrukturen – p. 2 Vorbetrachtungen • Benchmark: ”Something which can be used as a standard by which other things are judged or measured” • Objekte müssen vergleichbar sein • Objekte müssen auf die selbe Art und Weise verglichen werden Benchmarking von Bilddatenstrukturen – p. 2 Vorbetrachtungen • Benchmark: ”Something which can be used as a standard by which other things are judged or measured” • Objekte müssen vergleichbar sein • Objekte müssen auf die selbe Art und Weise verglichen werden • Vergleichskriterium bzw. Metrik: Zeit Operation Benchmarking von Bilddatenstrukturen – p. 2 Aufbau • Simuliert wird das Laufzeitverhalten bestimmter Operationen in Abhängigkeit von Datenstruktur und Größe. Benchmarking von Bilddatenstrukturen – p. 3 Aufbau • Simuliert wird das Laufzeitverhalten bestimmter Operationen in Abhängigkeit von Datenstruktur und Größe. • Untersuchte Operationen: Subrange, Slice (für jede Dimension), Transpose, Flip (um jede Achse) Benchmarking von Bilddatenstrukturen – p. 3 Aufbau • Simuliert wird das Laufzeitverhalten bestimmter Operationen in Abhängigkeit von Datenstruktur und Größe. • Untersuchte Operationen: Subrange, Slice (für jede Dimension), Transpose, Flip (um jede Achse) • Wir haben uns auf maximal zweidimensionale Datenstrukturen beschränkt Benchmarking von Bilddatenstrukturen – p. 3 Vorgehensweise • Festlegung eines Interface, welches die Funktionalität vorgibt Benchmarking von Bilddatenstrukturen – p. 4 Vorgehensweise • Festlegung eines Interface, welches die Funktionalität vorgibt • Die Datentypen implementieren dieses Interface Benchmarking von Bilddatenstrukturen – p. 4 Vorgehensweise • Festlegung eines Interface, welches die Funktionalität vorgibt • Die Datentypen implementieren dieses Interface • Der Benchmark basiert auf der Funktionalität des Interface und ist für alle Datentypen gleich. Benchmarking von Bilddatenstrukturen – p. 4 Vorgehensweise • Festlegung eines Interface, welches die Funktionalität vorgibt • Die Datentypen implementieren dieses Interface • Der Benchmark basiert auf der Funktionalität des Interface und ist für alle Datentypen gleich. • Der Benchmark durchläuft einen Zyklus von Operationen Benchmarking von Bilddatenstrukturen – p. 4 Vorgehensweise • Festlegung eines Interface, welches die Funktionalität vorgibt • Die Datentypen implementieren dieses Interface • Der Benchmark basiert auf der Funktionalität des Interface und ist für alle Datentypen gleich. • Der Benchmark durchläuft einen Zyklus von Operationen • Die Durchlaufzeit wird dann zu Vergleichszwecken gemessen Benchmarking von Bilddatenstrukturen – p. 4 Ergebnisse Die Datenstrukturen unterscheiden sich sehr stark in ihrem Laufzeitverhalten (150 mb Last, also etwa 4500x4500 Pixel): Typ Strides + Offset Index Array Multidim. Array Typ Strides + Offset Index Array Multidim. Array Subrange Slice (1. Komp.) Slice(2.) 0 0.047 427 0 0.046 0 0 0.046 5 Transpose Flip (1. Achse) Flip (2.) 0 0 10602 0 0.044 472 0 0.044 1 Benchmarking von Bilddatenstrukturen – p. 5 Ergebnisse • Das beste Laufzeitverhalten zeigt die ”Strides and Offset”-Struktur • Das schlechteste Laufzeitverhalten das multidimensionale Array • Insgesammt bestätigten die Versuche die theoretischen Überlegungen. ◦ Die ”Strides and Offset”-Struktur verhält sich linear in der Anzahl der Dimension ◦ Der Index Array linear in der Anzahl der Elemente ◦ Der multidimensionale Array schlechtestenfalls quadratisch in der Anzahl der Elemente Benchmarking von Bilddatenstrukturen – p. 6 Bemerkungen • Die eingesetzten Betriebssysteme wirken sich nicht auf das Laufzeitverhalten aus. • Die getesteten Java-VMs zeigen ein sehr unterschiedliches Laufzeitverhalten, und machen den Hauptunterschied aus. • Performanteste JVM war IBMs JDK 1.4 Benchmarking von Bilddatenstrukturen – p. 7 JVM Performance 140 JVM Performance 80 60 40 20 time (ms) 100 120 Win Sun 1.4.0 Linux Sun 1.4.0 Linux Bea JRockit Linux Sun 1.4.2 Linux IBM 1.4 0 50 100 size (mb) 150 200 Benchmarking von Bilddatenstrukturen – p. 8 verwendete Tools • Eclipse als Entwicklungsumgebung http://www.eclipse.org • JUnit als Unit Test-Framework http://junit.org • Ant als Build-Tool http://ant.apache.org Benchmarking von Bilddatenstrukturen – p. 9 Literatur • R. Binder: Testing Object-Oriented Systems • M. Fowler: Refactoring • E. Gamma, R. Helms, R. Johnson, J. Vlissides: Design Patterns Addison-Wesley Benchmarking von Bilddatenstrukturen – p. 10