Reuse compression/decompression results in compression benchmarks - #9744
Reuse compression/decompression results in compression benchmarks#9744robert3005 wants to merge 3 commits into
Conversation
Signed-off-by: Robert Kruszewski <github@robertk.io>
Merging this PR will regress 1 benchmark
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | random_i16[0.8] |
74.2 µs | 92.5 µs | -19.76% |
| ⚡ | WallTime | arrow_checked_add_u32_neon[16384] |
20.5 µs | 12.8 µs | +60.35% |
| ⚡ | Simulation | random_i8[0.5] |
90.6 µs | 67 µs | +35.25% |
| ⚡ | Simulation | decompress[u64, (4000, 1024)] |
85.5 µs | 70.3 µs | +21.59% |
| ⚡ | WallTime | arrow_checked_add_u32_avx2[16384] |
21.4 µs | 17.7 µs | +20.98% |
| ⚡ | Simulation | allocate_drop_arrow[0] |
456.9 ns | 402.7 ns | +13.45% |
| ⚡ | WallTime | mul_u32_nonnull_avx512 |
6.3 µs | 5.6 µs | +11.86% |
| ⚡ | Simulation | allocate_drop_bytes[0] |
520.2 ns | 466 ns | +11.62% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing rk/compressionbench (c7361f2) with develop (265b705)
Footnotes
-
206 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: Compression 📖Commits: PR vortex / vortex-file-compressed / ns (0.785x ✅, 14↑ 1↓)
vortex / vortex-file-compressed / bytes (1.000x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / ratio (0.852x ✅, 13↑ 2↓)
vortex / parquet / ns (0.998x ➖, 0↑ 0↓)
vortex / parquet / bytes (1.000x ➖, 0↑ 0↓)
vortex / arrow-ipc / ns (0.961x ➖, 5↑ 0↓)
vortex / arrow-ipc / bytes (1.000x ➖, 0↑ 0↓)
|
Reusing one Vortex array across iterations let every run after the first find its statistics already cached, so the timed region shrank to just the encoding. Reset the input before each iteration so the measurement matches a fresh conversion. Signed-off-by: Robert Kruszewski <github@robertk.io> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019CX6MXw5FFYnqQNdV7K4ci
| /// The Vortex writer computes statistics inside the timed region and caches them on the | ||
| /// array, so reusing one array across iterations would let every run after the first skip | ||
| /// that work. Clearing the cache keeps each iteration's measurement comparable. | ||
| pub fn reset(&self) { |
There was a problem hiding this comment.
holding vortex in memory lets you skip stat computation when writing/compression so in order to time the full thing we have to get rid of them
Avoid decompressing and reloading files multiple times in benchmark run