TU Darmstadt / ULB / TUprints

Actionable Program Analyses for Improving Software Performance

Selakovic, Marija (2019)
Actionable Program Analyses for Improving Software Performance.
Technische Universität Darmstadt
Ph.D. Thesis, Primary publication

[img]
Preview
Text
Marija_Selakovic_Dissertation.pdf - Published Version
Copyright Information: CC BY-SA 4.0 International - Creative Commons, Attribution ShareAlike.

Download (893kB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Actionable Program Analyses for Improving Software Performance
Language: English
Referees: Pradel, Prof. Dr. Michael ; Tip, Prof. Dr. Frank
Date: 5 June 2019
Place of Publication: Darmstadt
Date of oral examination: 5 June 2019
Abstract:

Nowadays, we have greater expectations of software than ever before. This is followed by constant pressure to run the same program on smaller and cheaper machines. To meet this demand, the application’s performance has become the essential concern in software development. Unfortunately, many applications still suffer from performance issues: coding or design errors that lead to performance degradation. However, finding performance issues is a challenging task: there is limited knowledge on how performance issues are discovered and fixed in practice, and current performance profilers report only where resources are spent, but not where resources are wasted. The goal of this dissertation is to investigate actionable performance analyses that help developers optimize their software by applying relatively simple code changes. To understand causes and fixes of performance issues in real-world software, we first present an empirical study of 98 issues in popular JavaScript projects. The study illustrates the prevalence of simple and recurring optimization patterns that lead to significant performance improvements. Then, to help developers optimize their code, we propose two actionable performance analyses that suggest optimizations based on reordering opportunities and method inlining. In this work, we focus on optimizations with four key properties. First, the optimizations are effective, that is, the changes suggested by the analysis lead to statistically significant performance improvements. Second, the optimizations are exploitable, that is, they are easy to understand and apply. Third, the optimizations are recurring, that is, they are applicable across multiple projects. Fourth, the optimizations are out-of-reach for compilers, that is, compilers can not guarantee that a code transformation preserves the original semantics. To reliably detect optimization opportunities and measure their performance benefits, the code must be executed with sufficient test inputs. The last contribution complements state-of-the-art test generation techniques by proposing a novel automated approach for generating effective tests for higher-order functions. We implement our techniques in practical tools and evaluate their effectiveness on a set of popular software systems. The empirical evaluation demonstrates the potential of actionable analyses in improving software performance through relatively simple optimization opportunities.

Alternative Abstract:
Alternative AbstractLanguage

Die heutigen Erwartungen an Software sind größer als je zuvor. Vor allem der Druck bestehende Programme auf günstigerer und weniger leistungsfähiger Hardware auszuführen, lässt Performance zum zentralen Anliegen in der Softwareentwicklung werden. Und doch haben viele Anwendungen Performanceprobleme, also Design oder Programmierfehler, die zu Leistungseinbußen führen. Eben jene Performan-ceprobleme zu finden, ist allerdings eine anspruchsvolle Aufgabe: Das Wissen, wie Performanceprobleme in der Praxis gefunden und behoben werden ist begrenzt und heutige Profiler zeigen nur auf, wo Ressourcen ausgegeben, aber nicht wo sie verschwendet werden. Ziel dieser Arbeit ist es, praktisch umsetzbar Performanceanalysen zu unter- suchen, die Entwicklern helfen ihre Software durch relative einfache Änderungen am Quelltext zu optimieren. Um besser zu verstehen wie Performanceproblemen verursacht und behoben werden, stellen wir zunächst eine empirische Studie über 98 Probleme in weit verbreiteten JavaScript Projekten vor. Die Studie zeigt einfache und wiederkehrende Optimierungsmuster auf, die zu signifikanten Performance verbesserungen führen. Darauf aufbauend stellen wir zwei praktisch umsetzbar Performanceanalysen vor, die Entwicklern helfen ihre Programme durch Reordering und durch Methoden-Inlining zu optimieren. Dabei fokussieren wir uns auf Optimierungen mit vier zentralen Eigenschaften. Erstens sind die Optimierungen effektiv, das heißt die von der Analyse vorgeschlagenen Änderungen führen zu statistisch signifikanten Leistungssteigerungen. Zweitens sind die Optimierungen nutzbar, das heißt sie sind leicht zu verstehen und anzuwenden. Drittens sind die Optimierungen wiederkehrend, das heißt projektübergreifend anwendbar. Viertens sind die Optimierungen unerreichbar für Compiler, das heißt Compiler können nicht garantieren, dass eine Code-Transformation semantikerhaltend ist. Um die Optimierungsmöglichkeiten zuverlässig zu erkennen und deren Leistungsverbesserung messen zu können, muss der Code schließlich mit ausreichend Testeingaben ausgeführt werden. Der letzte Beitrag in dieser Arbeit ergänzt Testgenerierungstechniken auf dem Stand der Technik durch einen neuen, automatisierten Ansatz zur Generierung effektiver Tests für Funktionen höherer Ordnung. Wir implementierung die genannten Techniken in praxistauglichen Werkzeugen und bewerten deren Effektivität auf einer Reihe weit verbreiteter Softwaresysteme. Die empirische Auswertung zeigt, dass praktisch umsetzbar Performanceanalysen in der Lage sind die Leistung von Software durch relativ einfache Optimierungsvorschläge zu verbessern.

German
URN: urn:nbn:de:tuda-tuprints-87683
Classification DDC: 000 Generalities, computers, information > 004 Computer science
Divisions: 20 Department of Computer Science > SOLA - Software Lab
Date Deposited: 11 Jun 2019 11:42
Last Modified: 09 Jul 2020 02:38
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/8768
PPN: 449678660
Export:
Actions (login required)
View Item View Item