Automate RowFn benchmark comparisons - #9351
Conversation
Merging this PR will improve performance by 13.64%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ⚡ | WallTime | words_gather_scalar[65536] |
9.4 µs | 8.2 µs | +13.64% |
Tip
Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ct/row-fn-benchmark-tools (b65f5d9) with ct/row-fn-spatial-predicates (12d920a)2
Footnotes
-
2129 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
ct/row-fn-spatial-predicates(7ce135f) during the generation of this report, so da8bb97 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩
127d69d to
7503a08
Compare
6a11034 to
eac0f22
Compare
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
|
fde4b39 to
47b2079
Compare
47b2079 to
476afb4
Compare
476afb4 to
c297d4a
Compare
65a604a to
a7940f3
Compare
a7940f3 to
a21e22e
Compare
a21e22e to
5288f14
Compare
5288f14 to
5a73677
Compare
5a73677 to
19169bd
Compare
19169bd to
b65f5d9
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>
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>
b65f5d9 to
46b1346
Compare
Too many benchmarks in a single uploadThe performance report could not be generated because there were too many benchmarks in a single upload to CodSpeed. We recommend sharding your benchmarks into smaller uploads, with max 1000 benchmarks per upload. See the documentation for more information. |
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.