Skip to content

bench: keep third-party and frozen baselines out of CodSpeed - #9952

Open
connortsui20 wants to merge 1 commit into
ct/beautiful-maxwell-7eyyvpfrom
ct/codspeed-local-only-baselines
Open

connortsui20 wants to merge 1 commit into
ct/beautiful-maxwell-7eyyvpfrom
ct/codspeed-local-only-baselines

Conversation

@connortsui20

@connortsui20 connortsui20 commented Sep 20, 2026

Copy link
Copy Markdown
Member

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:

Benchmark Flips on unrelated PRs (all PRs) Max swing
lane_kernels.rs: arrow_checked_add_u32 (neon leg) 64 (97) 67%
lane_kernels.rs: arrow_checked_add_u32 (avx2 leg) 48 (65) 22%
collect_bool.rs: words_gather_scalar[65536] (avx2 leg) 45 (62) 15%
lane_kernels.rs: arrow_checked_add_u32 (avx512 leg) 30 (41) 22%

arrow_checked_add_u32 runs the arrow-rs checked add over the same data as lanezip_checked_add_u32. 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 flipped on about half of all pull requests.

Changes

Both benchmarks stay in the tree for local cargo bench comparisons, 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_* and arrow_widen_* in lane_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 warnings
  • RUSTFLAGS="--cfg codspeed -D warnings" cargo check --locked --benches -p vortex-buffer -p vortex-compute, to confirm the gated build has no unused items
  • cargo +nightly-2026-09-10 fmt on the touched crates

🤖 Generated with Claude Code

https://claude.ai/code/session_01B6ApyxEXpjiasZbQptsypn


Generated by Claude Code

`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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants