login
Home / Papers / Optimizing Parallel Java Streams

Optimizing Parallel Java Streams

3 Citations•2022•
Matteo Basso, F. Schiavio, Andrea Rosà
2022 26th International Conference on Engineering of Complex Computer Systems (ICECCS)

This work presents a novel method to exploit high-level static analysis to characterize stream pipelines, detect parallel streams, and apply transformations removing the abstraction overhead, and demonstrates that this approach significantly reduces execution time and memory allocation.

Abstract

The Java Stream API increases developer produc-tivity and greatly simplifies exploiting parallel computation by providing a high-level abstraction on top of complex data pro-cessing, parallelization, and synchronization algorithms. However, the usage of the Java Stream API often incurs significant runtime overhead. Method inlining and the automated translation of code using the Java Stream API into imperative code using loops can reduce such overhead; however, existing approaches and tools are applicable only to sequential stream pipelines, leaving the optimization of parallel streams an open issue. We bridge this gap by presenting a novel method to exploit high-level static analysis to characterize stream pipelines, detect parallel streams, and apply transformations removing the abstraction overhead. We evaluate our method on a set of benchmarks, showing that our approach significantly reduces execution time and memory allocation.