TU Darmstadt / ULB / TUbiblio

Design and Analysis of a Scala Benchmark Suite for the Java Virtual Machine

Sewe, Andreas (2012)
Design and Analysis of a Scala Benchmark Suite for the Java Virtual Machine.
Technische Universität Darmstadt
Dissertation, Erstveröffentlichung

Kurzbeschreibung (Abstract)

In the last decade, virtual machines (VMs) for high-level languages have become pervasive, as they promise both portability and high performance. However, these virtual machines were often designed to support just a single language well. The design of the Java Virtual Machine (JVM), for example, is heavily influenced by the Java programming language. Despite its current bias towards Java, in recent years the JVM in particular has been targeted by numerous new languages: Scala, Groovy, Clojure, and others. This trend has not been reflected in JVM research, though; all major benchmark suites for the JVM are still firmly focused on the Java language rather than on the language ecosystem as a whole. This state of affairs threatens to perpetuate the bias towards Java, as JVM implementers strive to “make the common case fast.” But what is common for Java may be uncommon for other, popular languages. One of these other languages is Scala, a language with both object-oriented and functional features, whose popularity has grown tremendously since its first public appearance in 2003. What characteristics Scala programs have or have not in common with Java programs has been an open question, though. One contribution of this thesis is therefore the design of a Scala benchmark suite that is on par with modern, widely-accepted Java benchmark suites. Another contribution is the subsequent analysis of this suite and an in-depth, VM-independent comparison with the DaCapo 9.12 benchmark suite, the premier suite used in JVM research. The analysis shows that Scala programs exhibit not only a distinctive instruction mix but also object demographics close to those of the Scala language’s functional ancestors. This thesis furthermore shows that these differences can have a marked effect on the performance of Scala programs on modern high-performance JVMs. While JVMs exhibit remarkably similar performance on Java programs, the performance of Scala programs varies considerably, with the fastest JVM being more than three times faster than the slowest.

Typ des Eintrags: Dissertation
Erschienen: 2012
Autor(en): Sewe, Andreas
Art des Eintrags: Erstveröffentlichung
Titel: Design and Analysis of a Scala Benchmark Suite for the Java Virtual Machine
Sprache: Englisch
Referenten: Mezini, Prof. Dr. Ermira ; Jones, Prof. Richard E.
Publikationsjahr: 29 Oktober 2012
Ort: Darmstadt
Datum der mündlichen Prüfung: April 2013
URL / URN: http://tuprints.ulb.tu-darmstadt.de/3377
Kurzbeschreibung (Abstract):

In the last decade, virtual machines (VMs) for high-level languages have become pervasive, as they promise both portability and high performance. However, these virtual machines were often designed to support just a single language well. The design of the Java Virtual Machine (JVM), for example, is heavily influenced by the Java programming language. Despite its current bias towards Java, in recent years the JVM in particular has been targeted by numerous new languages: Scala, Groovy, Clojure, and others. This trend has not been reflected in JVM research, though; all major benchmark suites for the JVM are still firmly focused on the Java language rather than on the language ecosystem as a whole. This state of affairs threatens to perpetuate the bias towards Java, as JVM implementers strive to “make the common case fast.” But what is common for Java may be uncommon for other, popular languages. One of these other languages is Scala, a language with both object-oriented and functional features, whose popularity has grown tremendously since its first public appearance in 2003. What characteristics Scala programs have or have not in common with Java programs has been an open question, though. One contribution of this thesis is therefore the design of a Scala benchmark suite that is on par with modern, widely-accepted Java benchmark suites. Another contribution is the subsequent analysis of this suite and an in-depth, VM-independent comparison with the DaCapo 9.12 benchmark suite, the premier suite used in JVM research. The analysis shows that Scala programs exhibit not only a distinctive instruction mix but also object demographics close to those of the Scala language’s functional ancestors. This thesis furthermore shows that these differences can have a marked effect on the performance of Scala programs on modern high-performance JVMs. While JVMs exhibit remarkably similar performance on Java programs, the performance of Scala programs varies considerably, with the fastest JVM being more than three times faster than the slowest.

Alternatives oder übersetztes Abstract:
Alternatives AbstractSprache

Aufgrund ihres Versprechens von Portabilität und Geschwindigkeit haben sich virtuelle Maschinen (VMs) für höhere Programmiersprachen in der letzten Dekade auf breiter Front durchgesetzt. Häufig ist ihr Design jedoch nur darauf ausgelegt, eine einzige Sprache gut zu unterstützen. So wurde das Design der Java Virtual Machine (JVM) zum Beispiel stark durch das Design der Programmiersprache Java beeinflusst. Trotz ihrer aktuellen Ausrichtung auf Java hat sich insbesondere die JVM als Plattform für eine Vielzahl von neuer Programmiersprachen etabliert, darunter Scala, Groovy und Clojure. Dieser Entwicklung wurde in der Forschung zu JVMs bisher jedoch wenig Rechnung getragen; alle großen Benchmark Suites für die JVM sind immer noch stark auf Java als Sprache anstatt auf die Plattform als Ganzes fokussiert. Dieser Zustand droht, die systematische Bevorzugung von Java auf lange Zeit festzuschreiben, da die JVM-Entwickler ihre virtuellen Maschinen für die häufigsten Anwendungsfälle optimieren. Was aber häufig für Java ist, muss keinesfalls häufig für andere populäre Sprachen sein. Eine dieser Sprachen ist Scala, welche sowohl funktionale als auch objekt-orientierte Konzepte unterstützt und seit ihrer Veröffentlichung im Jahre 2003 stetig in der Entwicklergunst gestiegen ist. Welche Charakteristika Scala-Programme mit Java-Programmen gemein haben ist allerdings eine weitgehend ungeklärte Frage. Ein Beitrag dieser Dissertation ist daher das Erstellen einer Benchmark Suite für die Programmiersprache Scala, die mit modernen, etablierten Benchmark Suites für Java konkurrieren kann. Ein weiterer Beitrag ist eine umfassende Analyse der in der Suite enthaltenen Benchmarks und ein VM-unabhängiger Vergleich mit den Benchmarks der DaCapo 9.12 Benchmark Suite, die bisher bevorzugt in der Forschung zu JVMs eingesetzt wird. Diese Analyse zeigt auf, dass Scala-Programme nicht nur den Befehlssatz der JVM merklich anders nutzen, sondern auch, dass allozierte Objekte eine Lebensdauerverteilung aufweisen, die der funktionaler Sprachen nahekommt. Wie diese Dissertation weiterhin zeigt, haben diese Unterschiede einen deutlichen Effekt auf die Geschwindigkeit, mit der Scala-Programme auf modernen Hochleistungs-JVMs ausgeführt werden. Während verschiedene JVMs sich beim Ausführen von Java-Programmen als ähnlich leistungsfähig erweisen, sind die Leistungsunterschiede im Falle von Scala-Programmen beträchtlich; die schnellste JVM ist hierbei mehr als dreimal so schnell wie die langsamste.

Deutsch
Freie Schlagworte: Benchmarking; Workload Characterization; Scala; Java; Java Virtual Machine
URN: urn:nbn:de:tuda-tuprints-33777
Sachgruppe der Dewey Dezimalklassifikatin (DDC): 000 Allgemeines, Informatik, Informationswissenschaft > 004 Informatik
Fachbereich(e)/-gebiet(e): 20 Fachbereich Informatik
20 Fachbereich Informatik > Softwaretechnik
Hinterlegungsdatum: 05 Mai 2013 19:55
Letzte Änderung: 05 Mai 2013 19:55
PPN:
Referenten: Mezini, Prof. Dr. Ermira ; Jones, Prof. Richard E.
Datum der mündlichen Prüfung / Verteidigung / mdl. Prüfung: April 2013
Export:
Suche nach Titel in: TUfind oder in Google
Frage zum Eintrag Frage zum Eintrag

Optionen (nur für Redakteure)
Redaktionelle Details anzeigen Redaktionelle Details anzeigen