bench: keep third-party and frozen baselines out of CodSpeed - #9952
Conversation
5c6275f to
f59cb2d
Compare
`arrow_checked_add_u32` runs the arrow-rs checked add next to the Vortex lane kernel, and `words_gather_scalar` runs a frozen copy of the previous scalar `collect_bool` loop. Neither can regress because of a pull request, so a change in their number is never actionable, and on the walltime legs they were the three noisiest series in the suite: the arrow benchmark flipped on 64 of 97 pull requests on the neon leg alone. Both stay in the tree for local `cargo bench` comparisons. They lose `#[cpu_features]`, which takes them off the walltime legs, and gain `#[cfg(not(codspeed))]`, which keeps them out of the simulation build. Signed-off-by: Claude <noreply@anthropic.com>
f59cb2d to
0b9bec1
Compare
Merging this PR will degrade performance by 81.04%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | from_vec_drop_arrow[256] |
2.8 µs | 133.9 µs | -97.9% |
| ❌ | Simulation | from_vec_drop_arrow[1024] |
2.9 µs | 136.1 µs | -97.89% |
| ❌ | Simulation | from_vec_drop_vortex[256] |
3.1 µs | 142.3 µs | -97.84% |
| ❌ | Simulation | from_vec_drop_vortex[1024] |
3.1 µs | 144.8 µs | -97.84% |
| ❌ | Simulation | from_vec_drop_bytes[1024] |
2.2 µs | 99.4 µs | -97.8% |
| ❌ | Simulation | from_vec_drop_bytes[256] |
2.2 µs | 96.5 µs | -97.74% |
| ❌ | Simulation | from_vec_drop_vortex[64] |
3 µs | 114.7 µs | -97.37% |
| ❌ | Simulation | from_vec_drop_arrow[64] |
2.8 µs | 105.3 µs | -97.33% |
| ❌ | Simulation | allocate_freeze_drop_vortex_minimal_alignment[64] |
3.3 µs | 109.1 µs | -96.95% |
| ❌ | Simulation | allocate_freeze_drop_vortex_custom[64] |
4.2 µs | 135.6 µs | -96.91% |
| ❌ | Simulation | allocate_freeze_drop_vortex[64] |
3.4 µs | 109.3 µs | -96.86% |
| ❌ | Simulation | from_vec_drop_bytes[64] |
2.2 µs | 68.6 µs | -96.82% |
| ❌ | Simulation | allocate_freeze_drop_vortex[256] |
3.5 µs | 109.4 µs | -96.81% |
| ❌ | Simulation | allocate_freeze_drop_bytes[64] |
3.2 µs | 97 µs | -96.74% |
| ❌ | Simulation | allocate_freeze_drop_bytes[256] |
3.2 µs | 97.1 µs | -96.68% |
| ❌ | Simulation | allocate_freeze_drop_bytes[1024] |
3.3 µs | 97.1 µs | -96.63% |
| ❌ | Simulation | allocate_freeze_drop_arrow[64] |
3.8 µs | 104.9 µs | -96.38% |
| ❌ | Simulation | allocate_freeze_drop_vortex_minimal_alignment[65536] |
6 µs | 148.5 µs | -95.99% |
| ❌ | Simulation | allocate_freeze_drop_vortex_minimal_alignment[16384] |
6 µs | 148.3 µs | -95.99% |
| ❌ | Simulation | allocate_freeze_drop_vortex[1024] |
6 µs | 148.6 µs | -95.96% |
| ... | ... | ... | ... | ... | ... |
ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ct/codspeed-local-only-baselines (0b9bec1) with develop (b0ea625)2
Footnotes
-
287 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. ↩
-
No successful run was found on
develop(5c7f370) during the generation of this report, so b0ea625 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩
Summary
Second of three stacked PRs on CodSpeed flakiness. The first resizes benchmarks, the third unifies the allocator.
The three noisiest series in the whole suite are benchmarks of code Vortex does not own or does not change:
lane_kernels.rs:arrow_checked_add_u32(neon leg)lane_kernels.rs:arrow_checked_add_u32(avx2 leg)collect_bool.rs:words_gather_scalar[65536](avx2 leg)lane_kernels.rs:arrow_checked_add_u32(avx512 leg)arrow_checked_add_u32runs the arrow-rs checked add over the same data aslanezip_checked_add_u32.words_gather_scalarruns a frozen copy of the previous scalarcollect_boolloop. Neither can regress because of a pull request, so a change in their number is never actionable, and on the walltime legs they flipped on about half of all pull requests.Changes
Both benchmarks stay in the tree for local
cargo benchcomparisons, but leave CodSpeed: they lose#[cpu_features], which takes them off the walltime legs, and gain#[cfg(not(codspeed))], which keeps them out of the simulation build. Imports and fixture fields that only they use are gated the same way. The guide gets a short section on keeping third-party and frozen baselines out of CodSpeed.The other arrow baselines (
arrow_narrow_*andarrow_widen_*inlane_kernels.rs) run in simulation, have not flipped, and are left as they are.Checks run:
cargo clippy --locked --benches -p vortex-buffer -p vortex-compute -- -D warningsRUSTFLAGS="--cfg codspeed -D warnings" cargo check --locked --benches -p vortex-buffer -p vortex-compute, to confirm the gated build has no unused itemscargo +nightly-2026-09-10 fmton the touched crates🤖 Generated with Claude Code
https://claude.ai/code/session_01B6ApyxEXpjiasZbQptsypn
Generated by Claude Code