Automate RowFn benchmark comparisons - #9351
Conversation
Merging this PR will not alter performance
Performance Changes
Comparing Footnotes
|
127d69d to
7503a08
Compare
6a11034 to
eac0f22
Compare
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
eac0f22 to
1f8a2ae
Compare
|
Here are the local results that exercise the benchmark runner and its unchanged control suites. The full-stack comparison used a The full comparison used two warm runs and seven alternating measured pairs. Each process used 100 samples with a 0.25–0.5 second measurement window on CPU 4. Negative changes are faster. The change is the median paired ratio, not the ratio of the two displayed medians. This PR does not change these production paths. The control binaries still show layout-sensitive movement, including 14.72–17.21% regressions for list take/filter and a 15.66% improvement for per-row RowFn executor cleanup comparison: 8 casesThis focused screen compared the pre-cleanup and post-cleanup framework with three measured pairs.
Strict-validity cleanup comparison: 8 casesThese promoted cases used seven alternating measured pairs.
Like controls: 7 cases
Take/filter controls: 17 cases
VarBinView compaction controls: 8 cases
|
Rationale for this change
Makes RowFn performance comparisons repeatable across revisions. The runner records enough build and machine state to reject stale benchmark artifacts.
What changes are included in this PR?
Adds separate build and measurement phases, reusable revision-specific target directories, package-grouped parallel builds, alternating process order, machine records, and paired median summaries. The primary profile uses one codegen unit, fat LTO,
target-cpu=native, two warm runs, and seven measured pairs.Focused executor benchmarks and script tests cover framework overhead, strict validity, result parsing, changing inventories, and ratio aggregation. Reused artifacts are validated against the revision, dirty-state digest, Rust and Cargo versions, build configuration, suite inventory, and executable hash.
What APIs are changed? Are there any user-facing changes?
There are no public Rust API changes. This PR adds the developer-facing
scripts/benchmark-rowfn.shcommand and its result format.