Optimize exporting chunked<dict> to Arrow Dict - #9074
Conversation
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
2970b1f to
88ff2ba
Compare
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: TPC-H SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.994x ➖, 0↑ 0↓)
datafusion / parquet (0.985x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed (0.997x ➖, 0↑ 0↓)
duckdb / parquet (0.997x ➖, 0↑ 0↓)
File Size Changes (9 files changed, -43.9% overall, 0↑ 9↓)
Totals:
|
Benchmarks: PolarSignals Profiling 📖Vortex (geomean): 0.983x ➖ How to read Verdict and Engines
datafusion / vortex-file-compressed (0.983x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb NVMe 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.939x ➖, 2↑ 0↓)
datafusion / parquet (0.962x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.913x ➖, 2↑ 0↓)
duckdb / parquet (0.954x ➖, 1↑ 0↓)
File Size Changes (2 files changed, -46.3% overall, 0↑ 2↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.081x ➖, 0↑ 40↓)
datafusion / parquet (0.947x ➖, 12↑ 0↓)
duckdb / vortex-file-compressed (1.068x ➖, 2↑ 41↓)
duckdb / parquet (1.017x ➖, 1↑ 3↓)
File Size Changes (25 files changed, -43.5% overall, 0↑ 25↓)
Totals:
|
Benchmarks: Statistical and Population Genetics 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed (1.095x ➖, 0↑ 4↓)
duckdb / parquet (1.059x ➖, 0↑ 0↓)
File Size Changes (2 files changed, -32.3% overall, 0↑ 2↓)
Totals:
|
Benchmarks: FineWeb S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.952x ➖, 1↑ 0↓)
datafusion / parquet (0.992x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (1.018x ➖, 0↑ 0↓)
duckdb / parquet (1.021x ➖, 0↑ 0↓)
|
Benchmarks: Clickbench Sorted on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.018x ➖, 1↑ 2↓)
datafusion / parquet (1.080x ➖, 0↑ 4↓)
duckdb / vortex-file-compressed (1.065x ➖, 0↑ 2↓)
duckdb / parquet (1.016x ➖, 0↑ 0↓)
File Size Changes (201 files changed, -42.8% overall, 58↑ 143↓)
Totals:
|
Benchmarks: TPC-H SF=10 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.993x ➖, 0↑ 0↓)
datafusion / parquet (1.023x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.035x ➖, 0↑ 0↓)
duckdb / parquet (1.015x ➖, 0↑ 1↓)
File Size Changes (9 files changed, -44.0% overall, 0↑ 9↓)
Totals:
|
Benchmarks: Clickbench on NVME 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.350x ❌, 0↑ 43↓)
datafusion / parquet (1.296x ❌, 0↑ 43↓)
duckdb / vortex-file-compressed (1.268x ❌, 0↑ 43↓)
duckdb / parquet (1.168x ❌, 0↑ 32↓)
File Size Changes (101 files changed, -39.2% overall, 0↑ 101↓)
Totals:
|
Benchmarks: TPC-H SF=1 on S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.027x ➖, 0↑ 0↓)
datafusion / parquet (1.121x ➖, 1↑ 4↓)
duckdb / vortex-file-compressed (1.071x ➖, 0↑ 0↓)
duckdb / parquet (1.106x ➖, 0↑ 1↓)
|
|
|
||
| /// Convert a chunked array to an Arrow dictionary array by exporting each chunk separately. | ||
| fn chunked_to_dict( | ||
| array: vortex_array::arrays::ChunkedArray, |
Rationale for this change
We currently export
Chunked<Dict>to dict by first canonicalizing it and then re-building the array.What changes are included in this PR?
This PR exports each individual chunk and then calls arrow's
concatthat specialized for dics.What APIs are changed? Are there any user-facing changes?
None