Unpacking Parquet: Explicit SIMD, Scalar Baselines, and What HotSpot Makes of Them

Unpacking Parquet: Explicit SIMD, Scalar Baselines, and What HotSpot Makes of Them

On the JVM, optimizing a hot kernel is not only about writing faster code: it is also about understanding how much the result depends on the machine code HotSpot derives from the scalar loop. Using Parquet bit-unpacking as a concrete case, the piece shows that a SIMD speedup depends on which scalar baseline C2 is handed, when explicit vectorization is actually justified, and why a more specialized scalar routine is not necessarily faster.

June 9, 2026 · 25 min · Christian Del Monte

From Dictionary Indices to Integers: Parquet Bit Unpacking Explained

Parquet rarely stores a column’s values directly. Dictionary encoding keeps the distinct values once and represents the column through small bit-packed integer indices. This explainer walks through dictionary encoding, how the indices are bit-packed, and the bit-unpacking step that reconstructs them into an int[] before every dictionary lookup.

June 10, 2026 · 4 min · Christian Del Monte