Control Flow Duplication for Columnar Arrays in a Dynamic Compiler
Sebastian Kloibhofer (Johannes Kepler University Linz, Austria), Lukas, Makor (Johannes Kepler University Linz, Austria), David Leopoldseder (Oracle, Labs, Austria), Daniele Bonetta (Oracle Labs, Netherlands), Lukas Stadler, (Oracle Labs, Austria)

TL;DR
This paper introduces compiler optimizations in GraalVM that duplicate control flow to optimize queries on columnar arrays and presents a multi-level storage transformation approach for converting complex object arrays into columnar formats, improving performance.
Contribution
It presents novel compiler techniques for optimizing columnar array access and a new method for transforming complex object arrays into columnar storage in a dynamic language runtime.
Findings
Optimizations improve query performance on columnar arrays.
Multi-level storage transformation enables efficient conversion from complex objects.
Implementation demonstrates effectiveness with JavaScript Date objects.
Abstract
Columnar databases are an established way to speed up online analytical processing (OLAP) queries. Nowadays, data processing (e.g., storage, visualization, and analytics) is often performed at the programming language level, hence it is desirable to also adopt columnar data structures for common language runtimes. While there are frameworks, libraries, and APIs to enable columnar data stores in programming languages, their integration into applications typically requires developer interference. In prior work, researchers implemented an approach for *automated* transformation of arrays into columnar arrays in the GraalVM JavaScript runtime. However, this approach suffers from performance issues on smaller workloads as well as on more complex nested data structures. We find that the key to optimizing accesses to columnar arrays is to identify queries and apply specific optimizations to…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
