Skip to content

Add decimal benchmarks for DecimalByteParts, casts and exports - #10752

Merged
connortsui20 merged 6 commits into
developfrom
ct/decimal-benchmarks
Oct 26, 2026
Merged

connortsui20 merged 6 commits into
developfrom
ct/decimal-benchmarks

Conversation

@connortsui20

Copy link
Copy Markdown
Member

Summary

Adds benchmarks for the decimal paths that #10701 changes, so CodSpeed has a base before those changes land. They cover compute on DecimalByteParts arrays whose most significant part is narrower than the canonical width (decode, compare, filter, sum and min-max), a compressed DecimalByteParts tree in the decompress throughput bench, casts that grow the canonical width, and decimal export to Arrow and DuckDB.

Changes

The DecimalByteParts compute, decompress and cast benches run in CodSpeed. The Arrow and DuckDB export benches run locally only, because those crates have no CodSpeed shard, and the decimal compress bench stays inside the existing cfg(not(codspeed)) module. The compress bench enables the default core edition, so the decimal scheme uses its v1 variant as in a default write. vortex-duckdb gains a #[doc(hidden)] _benchmarking module that re-exports ArrayExporter and ConversionCache for its bench, and the fields of ConversionCache become pub(crate) so that the module exposes only the type. No library behavior changes. Every input is a canonical decimal or a DecimalByteParts array, so the benches stay valid once every decimal array must have the canonical width.

🤖 Generated with Claude Code

@connortsui20 connortsui20 added the changelog/chore A trivial change label Oct 23, 2026
@codspeed

codspeed Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Merging this PR will degrade performance by 6.9%

3 warnings, 1 note

⚠️ Walltime results may be unreliable

Some benchmarks used the Walltime instrument outside CodSpeed Macro Runners, which can make the results inconsistent.

Learn more about Macro Runners

See affected benchmarks

⚠️ Unable to measure the execution of 2 benchmarks

These benchmarks measured no execution time, so their results are not comparable and count as unchanged. This usually happens when the compiler removes the code under test.

Prevent compiler optimizations

See affected benchmarks

⚠️ 20 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

ℹ️ 40 benchmarks have no flamegraph

The flamegraph wasn't generated: the symbols of the profiling trace could not be resolved, because no information about the language frames was collected.

See affected benchmarks

⚡ 1 improved benchmark
❌ 3 regressed benchmarks
✅ 2404 untouched benchmarks
🆕 31 new benchmarks
⏩ 12 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
❌ Walltime filter_neon[8] 899 ns 1,295 ns -30.58%
❌ Walltime filter_neon[80] 2.5 µs 2.8 µs -11.23%
❌ Walltime filter_neon[64] 1.8 µs 2 µs -10.37%
⚡ CPU Simulation chunked_dict_primitive_canonical_into[f64, (1000, 1000, 10)] 203.3 µs 149.4 µs +36.03%
🆕 CPU Simulation compare_constant_out_of_range[gap_msp_i16_p10] N/A 43.6 µs N/A
🆕 CPU Simulation compare_constant_out_of_range[msp_i32_p18] N/A 65.3 µs N/A
🆕 CPU Simulation compare_constant_out_of_range[msp_i64_p38] N/A 43.6 µs N/A
🆕 CPU Simulation compare_constant[gap_msp_i16_p10] N/A 85.7 µs N/A
🆕 CPU Simulation compare_constant[msp_i32_p18_nullable] N/A 100.8 µs N/A
🆕 CPU Simulation compare_constant[msp_i32_p18] N/A 120.3 µs N/A
🆕 CPU Simulation compare_constant[msp_i64_p18_canonical] N/A 127 µs N/A
🆕 CPU Simulation compare_constant[msp_i64_p38] N/A 127.4 µs N/A
🆕 CPU Simulation decode[gap_msp_i16_p10] N/A 21.3 µs N/A
🆕 CPU Simulation decode[msp_i32_p18_nullable] N/A 22.5 µs N/A
🆕 CPU Simulation decode[msp_i32_p18] N/A 21.3 µs N/A
🆕 CPU Simulation decode[msp_i64_p18_canonical] N/A 21.3 µs N/A
🆕 CPU Simulation decode[msp_i64_p38] N/A 21.3 µs N/A
🆕 CPU Simulation filter[gap_msp_i16_p10] N/A 91.6 µs N/A
🆕 CPU Simulation filter[msp_i32_p18_nullable] N/A 144.1 µs N/A
🆕 CPU Simulation filter[msp_i32_p18] N/A 112.5 µs N/A
... ... ... ... ... ...

ℹ️ 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/decimal-benchmarks (63309e6) with develop (0291778)

Open in CodSpeed

Footnotes

  1. 12 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. ↩

@connortsui20
connortsui20 marked this pull request as ready for review October 26, 2026 14:23
@connortsui20
connortsui20 force-pushed the ct/decimal-benchmarks branch from 5778fab to bcb816f Compare October 26, 2026 14:23
@connortsui20
connortsui20 force-pushed the ct/decimal-benchmarks branch from bcb816f to ea43ce9 Compare October 26, 2026 15:17
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>
@connortsui20
connortsui20 force-pushed the ct/decimal-benchmarks branch from ea43ce9 to 63309e6 Compare October 26, 2026 15:18
@connortsui20
connortsui20 merged commit 76d8371 into develop Oct 26, 2026
84 of 86 checks passed
@connortsui20
connortsui20 deleted the ct/decimal-benchmarks branch October 26, 2026 16:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/chore A trivial change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants