Ryx targets 1-5 microseconds overhead. Currently, RowView stores row values in a Vec, which always allocates on the heap. For queries with a small number of columns (the majority of cases), this is unnecessary overhead.
Goal: Replace Vec<T> with SmallVec<[T; N]> in the RowView structure to enable stack allocation for rows with up to N columns.
Implementation hint:
- Add the
smallvec crate to ryx-backend.
- Modify the
RowView definition and the decode_rows logic to use SmallVec.
- Run benchmarks to quantify the reduction in allocator pressure.
Ryx targets 1-5 microseconds overhead. Currently,
RowViewstores row values in aVec, which always allocates on the heap. For queries with a small number of columns (the majority of cases), this is unnecessary overhead.Goal: Replace
Vec<T>withSmallVec<[T; N]>in theRowViewstructure to enable stack allocation for rows with up to N columns.Implementation hint:
smallveccrate toryx-backend.RowViewdefinition and thedecode_rowslogic to useSmallVec.