Della Toffola, Luca ; Pradel, Michael ; Gross, Thomas R.
Hrsg.: Gill, Andy (2015)
Performance problems you can fix: a dynamic analysis of memoization opportunities.
Pittsburgh, PA, USA
doi: 10.1145/2814270.2814290
Konferenzveröffentlichung, Bibliographie
Kurzbeschreibung (Abstract)
Performance bugs are a prevalent problem and recent research proposes various techniques to identify such bugs. This paper addresses a kind of performance problem that often is easy to address but difficult to identify: redundant computations that may be avoided by reusing already computed results for particular inputs, a technique called memoization. To help developers find and use memoization opportunities, we present MemoizeIt, a dynamic analysis that identifies methods that repeatedly perform the same computation. The key idea is to compare inputs and outputs of method calls in a scalable yet precise way. To avoid the overhead of comparing objects at all method invocations in detail, MemoizeIt first compares objects without following any references and iteratively increases the depth of exploration while shrinking the set of considered methods. After each iteration, the approach ignores methods that cannot benefit from memoization, allowing it to analyze calls to the remaining methods in more detail. For every memoization opportunity that MemoizeIt detects, it provides hints on how to implement memoization, making it easy for the developer to fix the performance issue. Applying MemoizeIt to eleven real-world Java programs reveals nine profitable memoization opportunities, most of which are missed by traditional CPU time profilers, conservative compiler optimizations, and other existing approaches for finding performance bugs. Adding memoization as proposed by MemoizeIt leads to statistically significant speedups by factors between 1.04x and 12.93x.
Typ des Eintrags: | Konferenzveröffentlichung |
---|---|
Erschienen: | 2015 |
Herausgeber: | Gill, Andy |
Autor(en): | Della Toffola, Luca ; Pradel, Michael ; Gross, Thomas R. |
Art des Eintrags: | Bibliographie |
Titel: | Performance problems you can fix: a dynamic analysis of memoization opportunities |
Sprache: | Englisch |
Publikationsjahr: | Oktober 2015 |
Verlag: | ACM |
(Heft-)Nummer: | 10 |
Buchtitel: | Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications |
Reihe: | OOPSLA 2015 |
Band einer Reihe: | 50 |
Veranstaltungsort: | Pittsburgh, PA, USA |
DOI: | 10.1145/2814270.2814290 |
Kurzbeschreibung (Abstract): | Performance bugs are a prevalent problem and recent research proposes various techniques to identify such bugs. This paper addresses a kind of performance problem that often is easy to address but difficult to identify: redundant computations that may be avoided by reusing already computed results for particular inputs, a technique called memoization. To help developers find and use memoization opportunities, we present MemoizeIt, a dynamic analysis that identifies methods that repeatedly perform the same computation. The key idea is to compare inputs and outputs of method calls in a scalable yet precise way. To avoid the overhead of comparing objects at all method invocations in detail, MemoizeIt first compares objects without following any references and iteratively increases the depth of exploration while shrinking the set of considered methods. After each iteration, the approach ignores methods that cannot benefit from memoization, allowing it to analyze calls to the remaining methods in more detail. For every memoization opportunity that MemoizeIt detects, it provides hints on how to implement memoization, making it easy for the developer to fix the performance issue. Applying MemoizeIt to eleven real-world Java programs reveals nine profitable memoization opportunities, most of which are missed by traditional CPU time profilers, conservative compiler optimizations, and other existing approaches for finding performance bugs. Adding memoization as proposed by MemoizeIt leads to statistically significant speedups by factors between 1.04x and 12.93x. |
Freie Schlagworte: | Memoization, caching, performance bugs, profiling |
ID-Nummer: | TUD-CS-2015-12088 |
Fachbereich(e)/-gebiet(e): | Profilbereiche Profilbereiche > Cybersicherheit (CYSEC) |
Hinterlegungsdatum: | 17 Aug 2017 14:42 |
Letzte Änderung: | 09 Mär 2022 13:39 |
PPN: | |
Export: | |
Suche nach Titel in: | TUfind oder in Google |
Frage zum Eintrag |
Optionen (nur für Redakteure)
Redaktionelle Details anzeigen |