Repository navigation
Sub segment read p2 - #7368
Sub segment read p2#7368joseph-isaacs wants to merge 29 commits into
Conversation
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> # Conflicts: # vortex-array/public-api.lock # vortex-array/src/array/vtable/dyn_.rs # vortex-array/src/array/vtable/mod.rs # vortex-array/src/arrays/bool/array.rs # vortex-array/src/arrays/fixed_size_list/compute/slice.rs # vortex-layout/src/layouts/flat/reader.rs # vortex-layout/src/layouts/flat/writer.rs # vortex-layout/src/segments/cache.rs
Polar Signals Profiling ResultsLatest Run
Previous Runs (8)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 1.018x ➖ datafusion / vortex-file-compressed (1.018x ➖, 0↑ 0↓)
|
File Sizes: PolarSignals ProfilingFile Size Changes (1 files changed, +0.0% overall, 1↑ 0↓)
Totals:
|
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.970x ➖, 1↑ 0↓)
datafusion / vortex-compact (0.989x ➖, 1↑ 1↓)
datafusion / parquet (1.032x ➖, 1↑ 4↓)
datafusion / arrow (1.054x ➖, 0↑ 4↓)
duckdb / vortex-file-compressed (0.991x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.996x ➖, 1↑ 1↓)
duckdb / parquet (0.995x ➖, 2↑ 2↓)
duckdb / duckdb (1.056x ➖, 0↑ 5↓)
Full attributed analysis
|
File Sizes: TPC-H SF=1 on NVMEFile Size Changes (195 files changed, -98.4% overall, 0↑ 195↓)
Totals:
|
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.013x ➖, 1↑ 4↓)
datafusion / vortex-compact (1.000x ➖, 1↑ 6↓)
datafusion / parquet (1.170x ❌, 0↑ 8↓)
duckdb / vortex-file-compressed (1.018x ➖, 1↑ 6↓)
duckdb / vortex-compact (1.018x ➖, 1↑ 6↓)
duckdb / parquet (1.182x ❌, 0↑ 9↓)
Full attributed analysis
|
File Sizes: FineWeb NVMeNo file size changes detected. |
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.010x ➖, 0↑ 2↓)
datafusion / vortex-compact (1.007x ➖, 0↑ 0↓)
datafusion / parquet (1.010x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.002x ➖, 3↑ 3↓)
duckdb / vortex-compact (0.998x ➖, 4↑ 0↓)
duckdb / parquet (1.009x ➖, 0↑ 1↓)
duckdb / duckdb (1.002x ➖, 1↑ 2↓)
Full attributed analysis
|
File Sizes: TPC-DS SF=1 on NVMENo file size changes detected. |
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.017x ➖, 0↑ 1↓)
datafusion / vortex-compact (1.022x ➖, 0↑ 1↓)
datafusion / parquet (1.043x ➖, 0↑ 2↓)
datafusion / arrow (1.038x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.049x ➖, 0↑ 5↓)
duckdb / vortex-compact (0.986x ➖, 0↑ 1↓)
duckdb / parquet (1.009x ➖, 0↑ 0↓)
duckdb / duckdb (0.960x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: TPC-H SF=10 on NVMENo file size changes detected. |
Benchmarks: FineWeb S3Verdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.728x ➖, 2↑ 0↓)
datafusion / vortex-compact (0.835x ➖, 2↑ 0↓)
datafusion / parquet (1.072x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.892x ➖, 1↑ 1↓)
duckdb / vortex-compact (0.884x ➖, 1↑ 1↓)
duckdb / parquet (1.018x ➖, 0↑ 0↓)
Full attributed analysis
|
9619e54 to
e20fa4d
Compare
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> # Conflicts: # encodings/fsst/src/canonical.rs
Merging this PR will improve performance by 27.66%
Performance Changes
Comparing Footnotes
|
|
This PR has been marked as stale because it has been open for 14 days with no activity. Please comment or remove the stale label if you wish to keep it active, otherwise it will be closed in 7 days |
|
This PR was closed because it has been inactive for 7 days since being marked as stale. |
The page planner only understands Primitive, BitPacked, Struct and FixedSizeList over ALP-RD, so random access into taxi-style columns (FoR, ALP, Dict, BitPacked with patches, ...) always read whole segments. Reuse the lazy-buffer idea from #7273/#7368 as a fallback for segments the planner cannot handle: - `LazySegmentBuffer` is a `DeviceBuffer` that records a byte range of a segment without reading it; slicing narrows the range and host access errors instead of blocking. - The array is decoded over lazy buffers, with buffers up to a quarter page read up front so slicing code that inspects patches, dictionaries or run ends sees host bytes. Each run of selected rows is sliced, which pushes the slice into the buffers through the encodings' own rules; the narrowed ranges are read in one batch and the tree is rebuilt with `with_slots`/`with_buffers`. - The read falls back to the whole segment when the narrowed bytes cost more than half of it, when a short run still needs nearly every lazy byte (the encoding does not push slices down; remembered per reader), for segments under four pages, and on any error. Taxi random access with partial reads is 4-6% faster than develop; the other datasets are unchanged or faster. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Jsub1UwkQ5C4ErXB45K9s
Signed-off-by: Nicholas Gates nick@nickgates.com<!--
Thank you for submitting a pull request! We appreciate your time and effort.
Please make sure to provide enough information so that we can review your pull
request. The Summary and Testing sections below contain guidance on what to
include.
-->
Summary
Closes: #000
Testing