Upgrade to fsst 0.6.0 and guard against out of bounds codes - #9149
Conversation
Merging this PR will improve performance by 28%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ⚡ | Simulation | decompress[u64, (10000, 1024)] |
175 µs | 118.4 µs | +47.73% |
| ⚡ | Simulation | compress_fsst[(1000, 64, 8)] |
1.2 ms | 1 ms | +10.91% |
Tip
Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.
Comparing rk/fsst (f715557) with develop (e0d5f28)
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals Profiling 📖Vortex (geomean): 0.976x ➖ datafusion / vortex-file-compressed / ns (0.976x ➖, 1↑ 0↓)
No file size changes detected. |
Benchmarks: String Encoding 📖vortex / vortex-file-compressed / ms (0.982x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / % (1.000x ➖, 0↑ 0↓)
|
Benchmarks: TPC-H SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.006x ➖, 0↑ 0↓)
datafusion / vortex-compact / ns (0.999x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.009x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed / ns (1.005x ➖, 1↑ 0↓)
duckdb / vortex-compact / ns (0.996x ➖, 0↑ 1↓)
duckdb / parquet / ns (0.998x ➖, 0↑ 0↓)
duckdb / duckdb / ns (1.000x ➖, 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 / ns (0.999x ➖, 1↑ 0↓)
datafusion / vortex-compact / ns (0.994x ➖, 0↑ 0↓)
datafusion / parquet / ns (0.992x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.982x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (0.980x ➖, 1↑ 0↓)
duckdb / parquet / ns (1.001x ➖, 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 / ns (0.993x ➖, 1↑ 2↓)
datafusion / vortex-compact / ns (1.003x ➖, 0↑ 1↓)
datafusion / parquet / ns (0.991x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed / ns (0.994x ➖, 7↑ 3↓)
duckdb / vortex-compact / ns (1.000x ➖, 7↑ 2↓)
duckdb / parquet / ns (1.000x ➖, 4↑ 7↓)
duckdb / duckdb / ns (0.999x ➖, 3↑ 2↓)
No file size changes detected. |
Benchmarks: Statistical and Population Genetics 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed / ns (0.963x ➖, 2↑ 1↓)
duckdb / vortex-compact / ns (0.994x ➖, 1↑ 1↓)
duckdb / parquet / ns (1.004x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.114x ➖, 0↑ 3↓)
datafusion / vortex-compact / ns (1.029x ➖, 0↑ 1↓)
datafusion / parquet / ns (1.104x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed / ns (1.105x ➖, 0↑ 2↓)
duckdb / vortex-compact / ns (0.984x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.998x ➖, 0↑ 0↓)
|
Benchmarks: Appian on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.012x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.001x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.014x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.994x ➖, 0↑ 0↓)
duckdb / duckdb / ns (1.001x ➖, 0↑ 0↓)
File Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: Clickbench Sorted on NVME 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.977x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.021x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed / ns (0.969x ➖, 1↑ 0↓)
duckdb / parquet / ns (0.990x ➖, 0↑ 0↓)
duckdb / duckdb / ns (1.001x ➖, 0↑ 0↓)
File Size Changes (201 files changed, -0.0% overall, 93↑ 108↓)
Totals:
|
Benchmarks: TPC-H SF=10 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.997x ➖, 0↑ 0↓)
datafusion / vortex-compact / ns (0.996x ➖, 0↑ 0↓)
datafusion / parquet / ns (0.991x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.001x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (1.006x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.998x ➖, 0↑ 0↓)
duckdb / duckdb / ns (1.020x ➖, 0↑ 0↓)
No file size changes detected. |
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 / ns (0.892x ➖, 0↑ 0↓)
datafusion / vortex-compact / ns (1.080x ➖, 0↑ 3↓)
datafusion / parquet / ns (0.975x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.013x ➖, 0↑ 1↓)
duckdb / vortex-compact / ns (0.993x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.005x ➖, 0↑ 0↓)
|
Benchmarks: Clickbench on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.997x ➖, 1↑ 0↓)
datafusion / parquet / ns (0.986x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed / ns (0.996x ➖, 3↑ 1↓)
duckdb / parquet / ns (1.018x ➖, 0↑ 1↓)
duckdb / duckdb / ns (1.004x ➖, 0↑ 0↓)
File Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: Random Access 📖Vortex (geomean): 0.996x ➖ vortex / vortex-file-compressed / ns (0.996x ➖, 0↑ 0↓)
vortex / parquet / ns (1.004x ➖, 0↑ 0↓)
vortex / lance / ns (0.992x ➖, 0↑ 0↓)
|
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 / ns (0.992x ➖, 0↑ 0↓)
datafusion / vortex-compact / ns (1.008x ➖, 0↑ 1↓)
datafusion / parquet / ns (1.020x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed / ns (0.972x ➖, 2↑ 1↓)
duckdb / vortex-compact / ns (0.979x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.063x ➖, 0↑ 2↓)
|
Benchmarks: Vortex queries 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.995x ➖, 0↑ 0↓)
datafusion / parquet / ns (0.997x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.001x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.999x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Compression 📖vortex / vortex-file-compressed / ns (0.989x ➖, 2↑ 1↓)
vortex / vortex-file-compressed / bytes (1.000x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / ratio (0.992x ➖, 2↑ 0↓)
vortex / parquet / ns (1.001x ➖, 0↑ 0↓)
vortex / parquet / bytes (1.000x ➖, 0↑ 0↓)
|
|
all the train compressor benchmarks, are we just benchmarking the |
Signed-off-by: Robert Kruszewski <github@robertk.io>
|
deleted the train compressor benchmarks. @AdamGS was right that they only benchmark fsst crate |
Since the compressor now requires padded state to guarantee codes don't access
out of bounds memory we need to adjust construction and usage to preserve padding