Correctly calculate FSST compressed output size#8551
Conversation
Signed-off-by: Robert Kruszewski <github@robertk.io>
Signed-off-by: Robert Kruszewski <github@robertk.io>
Merging this PR will improve performance by 16.03%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | slice_empty_vortex |
310 ns | 368.3 ns | -15.84% |
| ⚡ | Simulation | chunked_bool_canonical_into[(1000, 10)] |
27 µs | 16.2 µs | +66.45% |
| ⚡ | Simulation | bitwise_not_vortex_buffer_mut[128] |
215.3 ns | 186.1 ns | +15.67% |
| ⚡ | Simulation | bitwise_not_vortex_buffer_mut[1024] |
275.6 ns | 246.4 ns | +11.84% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing rk/fsstnarrower (7289d54) with develop (40a7857)
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 1.036x ➖ How to read Verdict and Engines
datafusion / vortex-file-compressed (1.036x ➖, 0↑ 1↓)
No file size changes detected. |
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.968x ➖, 1↑ 0↓)
datafusion / vortex-compact (0.954x ➖, 0↑ 0↓)
datafusion / parquet (0.995x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.021x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.997x ➖, 0↑ 0↓)
duckdb / parquet (1.008x ➖, 0↑ 0↓)
File Size Changes (1 files changed, +0.1% overall, 1↑ 0↓)
Totals:
|
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.005x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.011x ➖, 0↑ 0↓)
datafusion / parquet (1.017x ➖, 0↑ 1↓)
datafusion / arrow (1.038x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed (1.028x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.038x ➖, 0↑ 0↓)
duckdb / parquet (0.990x ➖, 2↑ 1↓)
duckdb / duckdb (1.032x ➖, 0↑ 0↓)
File Size Changes (10 files changed, +0.1% overall, 4↑ 6↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.048x ➖, 0↑ 6↓)
datafusion / vortex-compact (1.047x ➖, 0↑ 10↓)
datafusion / parquet (1.042x ➖, 1↑ 9↓)
duckdb / vortex-file-compressed (1.043x ➖, 1↑ 7↓)
duckdb / vortex-compact (1.039x ➖, 1↑ 6↓)
duckdb / parquet (1.019x ➖, 1↑ 3↓)
duckdb / duckdb (1.028x ➖, 1↑ 3↓)
File Size Changes (6 files changed, +0.0% overall, 3↑ 3↓)
Totals:
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed (1.011x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.006x ➖, 0↑ 0↓)
duckdb / parquet (1.002x ➖, 0↑ 0↓)
File Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: FineWeb S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.090x ➖, 0↑ 1↓)
datafusion / vortex-compact (1.073x ➖, 1↑ 3↓)
datafusion / parquet (1.087x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed (0.881x ➖, 2↑ 0↓)
duckdb / vortex-compact (0.841x ➖, 0↑ 0↓)
duckdb / parquet (1.008x ➖, 0↑ 0↓)
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.076x ➖, 0↑ 4↓)
datafusion / vortex-compact (1.070x ➖, 0↑ 5↓)
datafusion / parquet (1.060x ➖, 0↑ 6↓)
datafusion / arrow (1.072x ➖, 0↑ 6↓)
duckdb / vortex-file-compressed (1.112x ❌, 0↑ 13↓)
duckdb / vortex-compact (1.089x ➖, 0↑ 6↓)
duckdb / parquet (1.059x ➖, 0↑ 2↓)
duckdb / duckdb (1.062x ➖, 0↑ 1↓)
File Size Changes (27 files changed, +0.0% overall, 15↑ 12↓)
Totals:
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.971x ➖, 9↑ 1↓)
datafusion / parquet (0.993x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.026x ➖, 0↑ 3↓)
duckdb / parquet (1.012x ➖, 0↑ 1↓)
duckdb / duckdb (1.019x ➖, 0↑ 1↓)
File Size Changes (106 files changed, +0.0% overall, 57↑ 49↓)
Totals:
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.033x ➖, 0↑ 4↓)
datafusion / vortex-compact (1.291x ➖, 0↑ 10↓)
datafusion / parquet (1.389x ❌, 0↑ 12↓)
duckdb / vortex-file-compressed (1.019x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.066x ➖, 0↑ 1↓)
duckdb / parquet (1.058x ➖, 0↑ 1↓)
|
Benchmarks: Appian on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.967x ➖, 0↑ 0↓)
datafusion / parquet (0.965x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.973x ➖, 0↑ 0↓)
duckdb / parquet (0.982x ➖, 0↑ 0↓)
duckdb / duckdb (0.980x ➖, 0↑ 0↓)
File Size Changes (4 files changed, -0.0% overall, 3↑ 1↓)
Totals:
|
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.049x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.054x ➖, 0↑ 2↓)
datafusion / parquet (1.189x ➖, 0↑ 8↓)
duckdb / vortex-file-compressed (1.132x ➖, 0↑ 2↓)
duckdb / vortex-compact (1.076x ➖, 0↑ 0↓)
duckdb / parquet (1.090x ➖, 0↑ 1↓)
|
FSST worst case scenario for compression is all escape codes which would result
in 2x size increase. There's no additional overhead as previous pr would imply