Wie viel schneller ist Java 8?

Java SE 8 wurde letzten Monat (18. März 2014) veröffentlicht. Traditionell beinhaltet jede neue Hauptversion von JRE eine kostenlose Leistungssteigerung. Bekommen wir noch ein kostenloses Mittagessen? Und wie groß ist der Gewinn dieses Mal?

Lassen Sie es uns vergleichen.

Benchmark-Methodik

  • Führen Sie denselben Code mit drei verschiedenen JRE-Versionen aus (SunJDK 1.6.0_26OpenJDK 1.7.0_51 und OpenJDK 1.8.0). Der Code selbst wurde für Java 6 geschrieben (sowohl in der Syntax als auch in der Verwendung der JDK-API) und für Java 6 mit OpenJDK 1.7 kompiliert.
  • Jeder Lauf dauert etwa 55 Minuten.
  • VM-Argumente: -Xmx1536M -server

    Software: Linux 3.2.0-59-generic-pae

    Hardware: Intel® Xeon® CPU W3550 @ 3.07GHz

  • Jeder Lauf löst 13 Planungsprobleme mit OptaPlanner. Jedes Planungsproblem dauert 5 bis 5 Minuten. Bis zu 2 Planungsprobleme werden parallel gelöst.
  • Das Lösen eines Planungsproblems erfordert keine E/A (außer ein paar Millisekunden während des Startvorgangs, um die Eingabe zu laden). Eine einzelne CPU ist vollständig ausgelastet. Es werden ständig viele kurzlebige Objekte erstellt und der GC sammelt sie anschließend.
  • Die Benchmarks messen die Anzahl der Punkte, die pro Millisekunde berechnet werden können. Höher ist besser. Die Berechnung einer Bewertung für eine vorgeschlagene Planungslösung ist nicht trivial: Sie erfordert viele Berechnungen, einschließlich der Prüfung auf Konflikte zwischen jeder Entität und jeder anderen Entität.

Um diesen Benchmark lokal zu reproduzieren, Erstellen Sie Optaplanner aus dem Quellcode und führen Sie die Hauptklasse aus AllgemeinOptaPlannerBenchmarkApp.

Benchmark-Ergebnisse

Java 8-Leistung

Meine Beobachtungen:

  • Beim größten Datensatz (Machine Reassignment B10), der alle anderen Datensätze in der Größe in den Schatten stellt, handelt es sich um Java 8 20% schneller als Java 7, was bereits der Fall war 17% schneller als Java 6.
  • In einigen Fällen ist Java 8 langsamer als Java 7. Insbesondere für die Kursplanungsdatensätze ist Java 8 langsamer 6% langsamer als Java 7. Hoffentlich werden neue Versionen von Java 8 diesen Leistungsrückgang bald beheben.
  • Im Durchschnitt ist Java 8 nur 1% schneller als Java 7. Dies während Java 7 bereits ist 16% schneller als Java 6.
  • Obwohl dies die erste endgültige Version von OpenJDK 8 ist, habe ich in Java 8 keine Regressionen gefunden. Die Beispiele von OptaPlanner sind zu 100 % reproduzierbar, sodass die verschiedenen JREs erwartungsgemäß bei jeder einzelnen Iteration genau die gleichen Ergebnisse liefern.

Rohe Benchmark-Zahlen

optaplanner-bank

Abschluss

Bei großen Datensätzen ist Java 8 deutlich schneller. Und das, ohne eine Zeile Code zu ändern. Im Durchschnitt ist das Ergebnis weniger überzeugend (bei der aktuellen Version), aber ein kostenloses Mittagessen ist immer willkommen.

Dieser Artikel wurde ursprünglich unter veröffentlicht OptaPlanner-Bloghier mit Genehmigung des Autors und als Teil des JBC-Programms erneut veröffentlicht.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen