bench: track small u8 dictionary take - #9566
Conversation
Add a StatPopGen GT-shaped four-value dictionary canonicalization benchmark. Route it through the CPU-feature walltime legs for AVX2, AVX-512, and NEON. Signed-off-by: Joseph Isaacs <joseph-isaacs@users.noreply.github.com>
Merging this PR will degrade performance by 12.04%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | WallTime | words_gather_scalar_avx2[65536] |
8.3 µs | 9.4 µs | -12.48% |
| ❌ | Simulation | cold_misaligned[(16, 64)] |
380.2 µs | 430.1 µs | -11.59% |
| 🆕 | WallTime | dict_canonicalize_gt_u8_neon[1000000] |
N/A | 546.5 µs | N/A |
| 🆕 | WallTime | dict_canonicalize_gt_u8_neon[16000000] |
N/A | 8.7 ms | N/A |
| 🆕 | WallTime | dict_canonicalize_gt_u8_avx512[1000000] |
N/A | 419.7 µs | N/A |
| 🆕 | WallTime | dict_canonicalize_gt_u8_avx512[16000000] |
N/A | 6.8 ms | N/A |
| 🆕 | WallTime | dict_canonicalize_gt_u8_avx2[1000000] |
N/A | 420.4 µs | N/A |
| 🆕 | WallTime | dict_canonicalize_gt_u8_avx2[16000000] |
N/A | 6.8 ms | N/A |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ji/small-u8-table-take-benchmark (d49393c) with develop (ef43456)
Footnotes
-
54 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. ↩
Rationale
Establish a CodSpeed baseline for the low-cardinality dictionary case before adding the SIMD table kernel.
Changes
0u8,1u8,2u8, and fused null.u8dictionary codes at the observed GT frequencies.#[vortex_bench_support::cpu_features], routing it to the AVX2, AVX-512, and NEON wall-time legs instead of simulation.This is the lower PR in a two-PR stack. The SIMD implementation is intentionally absent so this PR records the baseline.
Checks
cargo check --locked -p vortex-array --bench take_primitivein simulation routingcargo check --locked -p vortex-array --bench take_primitivewith the NEON feature legcargo +nightly fmt --all --checkgit diff --check