Leseproben
Björn Stahl LucaNet AG

„Microbenchmarks sind und bleiben auch immer nur synthetische Tests. Das Ergebnis muss sich immer noch im Produktivbetrieb beweisen. Nur dann haben wir wirklich etwas erreicht, wenn das Ergebnis sich am Ende in der Produktion messbar verbessert hat. Es kann immer noch passieren, dass die positiven Effekte durch andere Seiteneffekte außerhalb des getesteten Bereichs wieder ausradiert werden und im schlimmsten Fall die Verbesserung überhaupt nicht spürbar ist.“

Performanceoptimierung ist ein sehr spannendes Feld in der Softwareentwicklung. Es muss nicht immer gleich bis runter zu Assembler gehen, Java selbst bietet jede Menge Möglichkeiten, Code so zu schreiben, dass er sehr performant wird.

Erst einmal soll der Frage auf den Grund gegangen werden, was nun ein Microbenchmark ist und wann sein Einsatz sinnvoll ist.

Ein Microbenchmark ist ein kleiner künstlicher Benchmark, der dazu gedacht ist, eine Methode oder einen Algorithmus zu testen und verschiedene Szenarien und/oder Implementierungen miteinander zu vergleichen. Bei einem Microbenchmark geht es darum, die Performance eines kleinen, ganz bestimmten Codeteils zu messen, im Gegensatz zu ganzen Programmen oder Projekten. Das ist vor allem dann sinnvoll, wenn einzelne Methoden oder Codeabschnitte getestet werden sollen, die auf einem kritischen Pfad liegen. Beispiele sind die Verwendung von verschiedenen Datenstrukturen, der Vergleich von Sortiermethoden und Ähnliches. Für ein paar Fingerübungen sind Fragen à la Stack Overflow „Was ist schneller, X oder Y?“ ein guter Start.

Gerade in diesen Situationen ist es unerlässlich, bestimmte Implementierungen miteinander zu vergleichen. Wenn es dabei um kleine Codeabschnitte geht, die auch noch sehr schnell durchlaufen, wird es allerdings auch schnell kompliziert. Jede Messung beeinflusst das Ergebnis, und jeder kleine Fehler verfälscht das Ergebnis massiv.

Je kleiner die Zeiteinheiten werden, desto größer wird der störende Effekt von Umgebungsfaktoren, die sich nicht immer kontrollieren lassen. Es kann beispielsweise sein, dass die CPU gerade heruntergetaktet ist und erst auf volle Leistung umschalten muss. Im Hintergrund startet vielleicht gerade der Download eines Softwareupdates, oder der Virenscanner beginnt seine täglichen Aufgaben. Im Rahmen der Messungen sollten solche Faktoren so gut es geht ausgeschaltet werden. Sämtliche Programme und Services, die nicht absolut notwendig sind, sollten beendet werden.

Die Clubregeln des Microbenchmarks

Ein Problem mit Microbenchmarks ist die Tatsache, dass das Problem umso komplizierter wird, je mehr man sich damit auseinandersetzt und je geringer die Ausführungszeiten werden. Daher die folgenden Regeln:

  1. Traue niemals den Ergebnissen
  2. Benchmarks lügen mehr als Statistiken
  3. Überprüfe immer deine Ergebnisse

Wenn die Ergebnisse eines Microbenchmarks nicht plausibel erscheinen, sind sie es meist auch nicht. In diesem Fall sollte man nach Fehlern im Benchmark Ausschau halten; dazu gleich mehr.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 6.19 - "Was kommt nach Java EE?"

Alle Infos zum Heft
579889781Performanceoptimierung mit Microbenchmarks
X
- Gib Deinen Standort ein -
- or -