Today’s huge memories make it possible to store and process
large data structures in memory instead of in a database.
Hence, accesses to this data should be optimized, which is
normally relegated either to the runtimes and compilers
or is left to the developers, who often lack the knowledge
about optimization strategies. As arrays are often part of the
language, developers frequently use them as an underlying
storage mechanism. Thus, optimization of arrays may be
vital to improve performance of data-intensive applications.
While compilers can apply numerous optimizations to speed
up accesses, it would also be beneficial to adapt the actual
layout of the data in memory to improve cache utilization.
However, runtimes and compilers typically do not perform
such memory layout optimizations.
In this work, we present an approach to dynamically per-
form memory layout optimizations on arrays of objects to
transform them into a columnar memory layout, a storage
layout frequently used in analytical applications that enables
faster processing of read-intensive workloads. By integration
speed up queries for large workloads by up to 7x, where the
initial transformation overhead is amortized over time.