2020
DOI: 10.1145/3428236
|View full text |Cite
|
Sign up to set email alerts
|

Eliminating abstraction overhead of Java stream pipelines using ahead-of-time program optimization

Abstract: Java 8 introduced streams that allow developers to work with collections of data using functional-style operations. Streams are often used in pipelines of operations for processing the data elements, which leads to concise and elegant program code. However, the declarative data processing style comes at a cost. Compared to processing the data with traditional imperative language mechanisms, constructing stream pipelines requires extra heap objects and virtual method calls, which often results in significant ru… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
5
0

Year Published

2022
2022
2023
2023

Publication Types

Select...
4
1

Relationship

0
5

Authors

Journals

citations
Cited by 6 publications
(5 citation statements)
references
References 46 publications
0
5
0
Order By: Relevance
“…Floo is inspired by a larger body of prior work that optimize Java programs, but instead targets the Android framework (not general Java), and integrates new techniques to tackle the computation patterns and resource restrictions in mobile apps and phones. Beyond memoization [5,25], other efforts automatically parallelize Java programs to take advantage of multi-core platforms [9,15,18,51,53,67]. Though conceptually complementary to Floo, we note that our results highlight substantial state sharing across invocations in app interaction handling, thereby limiting the potential for safe parallelism ( §3).…”
Section: Related Workmentioning
confidence: 80%
“…Floo is inspired by a larger body of prior work that optimize Java programs, but instead targets the Android framework (not general Java), and integrates new techniques to tackle the computation patterns and resource restrictions in mobile apps and phones. Beyond memoization [5,25], other efforts automatically parallelize Java programs to take advantage of multi-core platforms [9,15,18,51,53,67]. Though conceptually complementary to Floo, we note that our results highlight substantial state sharing across invocations in app interaction handling, thereby limiting the potential for safe parallelism ( §3).…”
Section: Related Workmentioning
confidence: 80%
“…Moreover, we find problematic stream processing that may have an impact on application performance (see Section 5.3). Academic material (e.g., books and tutorials) could more extensively discuss about stream-related performance issues (e.g., abstraction 25,80,81 and parallelization overheads 26,53 due to the use of streams), such that developers better leverage the Stream API and are particularly well-informed while deciding on whether involving streams in the implementation of performance-critical functionalities.…”
Section: Discussionmentioning
confidence: 99%
“…Other authors have focused on removing streams at a bytecode level, as stream‐related overheads can sometimes be avoided by using semantically‐equivalent imperative code. Møller et al 25 present StreamLiner, a proof‐of‐concept bytecode‐to‐bytecode tool to transform sequential streams into more efficient imperative code. Due to limitations inherent to the static analysis techniques used, StreamLiner is not able to analyze streams whose creation and execution take place in different methods.…”
Section: Related Workmentioning
confidence: 99%
See 2 more Smart Citations