Execute chunked FSL before take - #9012
Conversation
9e87146 to
fe7b289
Compare
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals Profiling 📖Vortex (geomean): 0.986x ➖ How to read Verdict and Engines
datafusion / vortex-file-compressed (0.986x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on NVME 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.998x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.018x ➖, 0↑ 0↓)
datafusion / parquet (1.015x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed (1.004x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.007x ➖, 0↑ 0↓)
duckdb / parquet (1.016x ➖, 2↑ 3↓)
duckdb / duckdb (0.997x ➖, 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 (1.002x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.998x ➖, 0↑ 0↓)
datafusion / parquet (0.999x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.990x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.979x ➖, 2↑ 0↓)
duckdb / parquet (1.004x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Vortex queries 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.105x ❌, 0↑ 2↓)
datafusion / parquet (1.117x ❌, 0↑ 1↓)
duckdb / vortex-file-compressed (1.085x ➖, 0↑ 0↓)
duckdb / parquet (1.016x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: TPC-DS SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.006x ➖, 0↑ 2↓)
datafusion / vortex-compact (1.005x ➖, 0↑ 1↓)
datafusion / parquet (1.001x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed (1.045x ➖, 1↑ 10↓)
duckdb / vortex-compact (1.018x ➖, 1↑ 2↓)
duckdb / parquet (1.014x ➖, 0↑ 1↓)
duckdb / duckdb (0.989x ➖, 2↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb S3 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.918x ➖, 1↑ 0↓)
datafusion / vortex-compact (0.934x ➖, 0↑ 0↓)
datafusion / parquet (0.973x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.976x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.994x ➖, 0↑ 1↓)
duckdb / parquet (0.971x ➖, 0↑ 0↓)
|
Benchmarks: TPC-H SF=10 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.927x ➖, 4↑ 0↓)
datafusion / vortex-compact (0.928x ➖, 2↑ 0↓)
datafusion / parquet (0.932x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.946x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.962x ➖, 0↑ 0↓)
duckdb / parquet (0.962x ➖, 2↑ 0↓)
duckdb / duckdb (0.980x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Clickbench Sorted on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.992x ➖, 1↑ 1↓)
datafusion / parquet (1.010x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.984x ➖, 2↑ 0↓)
duckdb / parquet (0.983x ➖, 0↑ 0↓)
duckdb / duckdb (0.995x ➖, 0↑ 0↓)
File Size Changes (201 files changed, -0.0% overall, 97↑ 104↓)
Totals:
|
Benchmarks: Statistical and Population Genetics 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed (1.064x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.062x ➖, 0↑ 1↓)
duckdb / parquet (1.052x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Random Access 📖Vortex (geomean): 0.826x ✅ How to read Verdict and Engines
unknown / unknown (0.863x ✅, 18↑ 0↓)
|
Benchmarks: Clickbench on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.047x ➖, 1↑ 4↓)
datafusion / parquet (1.055x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed (1.023x ➖, 1↑ 3↓)
duckdb / parquet (1.017x ➖, 0↑ 0↓)
duckdb / duckdb (1.019x ➖, 1↑ 1↓)
File Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
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.040x ➖, 0↑ 2↓)
datafusion / vortex-compact (0.930x ➖, 0↑ 0↓)
datafusion / parquet (0.946x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed (1.045x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.018x ➖, 0↑ 0↓)
duckdb / parquet (1.007x ➖, 0↑ 0↓)
|
Benchmarks: Appian on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.060x ➖, 0↑ 0↓)
datafusion / parquet (1.051x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.037x ➖, 0↑ 0↓)
duckdb / parquet (1.035x ➖, 0↑ 0↓)
duckdb / duckdb (1.025x ➖, 0↑ 0↓)
File Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: TPC-H SF=10 on S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.009x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.046x ➖, 0↑ 1↓)
datafusion / parquet (1.015x ➖, 0↑ 3↓)
duckdb / vortex-file-compressed (1.013x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.001x ➖, 0↑ 0↓)
duckdb / parquet (0.977x ➖, 0↑ 0↓)
|
Benchmarks: Compression 📖Vortex (geomean): 1.005x ➖ How to read Verdict and Engines
unknown / unknown (1.004x ➖, 0↑ 0↓)
|
Signed-off-by: Dimitar Dimitrov <dimitar@spiraldb.com>
|
i couldn't get the benchmarks to run on the diff between |
Co-authored-by: Robert Kruszewski <github@robertk.io> Signed-off-by: Dimitar Dimitrov <dimitar@spiraldb.com>
a093df9 to
9a40f67
Compare
## Rationale for this change The `Python (lint)` CI job is failing on `develop`: CI installs ruff unpinned via `uvx`, and ruff 0.16 started formatting Python code blocks inside Markdown files by default. Three docs (`docs/user-guide/spark.md`, `java/vortex-spark/README.md`, `vortex-python-cuda/README.md`) use deliberate comment alignment in their examples and now fail `ruff format --check`. ## What changes are included in this PR? Adds `exclude = ["*.md"]` under `[tool.ruff.format]`, restoring the pre-0.16 behavior (Python sources only — 137 files — are formatted; `ruff check` is unaffected). Verified locally with ruff 0.16.0: `uvx ruff format --check .` and `uvx ruff check .` both pass. ## What APIs are changed? Are there any user-facing changes? None — lint configuration only. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Robert Kruszewski <github@robertk.io> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Local
|
| Benchmark | List size | Base | Current | Difference |
|---|---|---|---|---|
take_chunked_fsl_random |
8 | 9.975 µs | 10.080 µs | +1.05% |
take_chunked_fsl_random |
16 | 9.773 µs | 9.992 µs | +2.24% |
take_chunked_fsl_random |
32 | 10.160 µs | 10.220 µs | +0.59% |
take_chunked_fsl_sorted |
8 | 10.060 µs | 10.230 µs | +1.69% |
take_chunked_fsl_sorted |
16 | 10.020 µs | 10.270 µs | +2.50% |
take_chunked_fsl_sorted |
32 | 10.360 µs | 10.590 µs | +2.22% |
Geometric mean: +1.71% runtime for the current revision.
So this change is slightly slower in all six affected local cases, although the difference is small. The earlier one-iteration samples were rejected because scheduler noise caused large swings; batching 100 iterations made the results stable across rounds.
Command:
DIVAN_SAMPLE_COUNT=100 DIVAN_SAMPLE_SIZE=100 \
cargo codspeed run -m walltime -p vortex-array --bench take_fsl take_chunked_fslEnvironment: Apple M4 Max, macOS arm64, rustc 1.91.0, cargo-codspeed 4.3.0.
Depends on #8881. Use the existing chunked FixedSizeList canonicalization path before applying the specialized take. This removes the physical FSL encoding requirement and lets logically FSL-typed chunks use the optimization. --------- Signed-off-by: Dimitar Dimitrov <dimitar@spiraldb.com> Signed-off-by: Robert Kruszewski <github@robertk.io> Co-authored-by: Robert Kruszewski <github@robertk.io> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|
this would be marginally slower but I think the code before was correct |
Depends on #8881. Use the existing chunked FixedSizeList canonicalization path before applying the specialized take. This removes the physical FSL encoding requirement and lets logically FSL-typed chunks use the optimization. --------- Signed-off-by: Dimitar Dimitrov <dimitar@spiraldb.com> Signed-off-by: Robert Kruszewski <github@robertk.io> Co-authored-by: Robert Kruszewski <github@robertk.io> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Depends on #8881. Use the existing chunked FixedSizeList canonicalization path before applying the specialized take. This removes the physical FSL encoding requirement and lets logically FSL-typed chunks use the optimization. --------- Signed-off-by: Dimitar Dimitrov <dimitar@spiraldb.com> Signed-off-by: Robert Kruszewski <github@robertk.io> Co-authored-by: Robert Kruszewski <github@robertk.io> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Depends on #8881.
Use the existing chunked FixedSizeList canonicalization path before applying the specialized take. This removes the physical FSL encoding requirement and lets logically FSL-typed chunks use the optimization.