TU Darmstadt / ULB / TUprints

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
Ph.D. Thesis, Primary publication

[img]
Preview
Text
phdthesis.pdf - Published Version
Copyright Information: In Copyright.

Download (3MB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Design and Analysis of a Scala Benchmark Suite for the Java Virtual Machine
Language: English
Referees: Mezini, Prof. Dr. Ermira ; Jones, Prof. Richard E.
Date: 29 October 2012
Place of Publication: Darmstadt
Date of oral examination: April 2013
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.

Alternative Abstract:
Alternative AbstractLanguage

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.

German
Uncontrolled Keywords: Benchmarking; Workload Characterization; Scala; Java; Java Virtual Machine
URN: urn:nbn:de:tuda-tuprints-33777
Classification DDC: 000 Generalities, computers, information > 004 Computer science
Divisions: 20 Department of Computer Science
20 Department of Computer Science > Software Technology
Date Deposited: 29 Apr 2013 14:51
Last Modified: 09 Jul 2020 00:19
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/3377
PPN: 320958582
Export:
Actions (login required)
View Item View Item