Compare primitive values with RowFn - #9703
Conversation
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Merging this PR will degrade performance by 8.07%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | WallTime | lt_i64_nullable_avx2 |
2.9 µs | 4.4 µs | -32.84% |
| ❌ | WallTime | lt_i64_nullable_avx512 |
2.9 µs | 4.4 µs | -32.56% |
| ❌ | WallTime | lt_i64_nullable_neon |
3.5 µs | 5.2 µs | -32.44% |
| ❌ | WallTime | compare_int_nullable_avx512 |
3.7 µs | 5 µs | -27.22% |
| ❌ | Simulation | compact_sliced[(2048, 10)] |
183.5 µs | 251.4 µs | -27.01% |
| ❌ | WallTime | compare_int_nullable_avx2 |
3.9 µs | 5.1 µs | -24.02% |
| ❌ | Simulation | compact_sliced[(1024, 10)] |
115.3 µs | 149.9 µs | -23.08% |
| ❌ | WallTime | compare_int_nullable_neon |
5 µs | 6.2 µs | -18.62% |
| ❌ | Simulation | int_gt[16] |
96.5 µs | 117.6 µs | -18% |
| ❌ | Simulation | or_chain[16] |
1.1 ms | 1.4 ms | -16.32% |
| ❌ | Simulation | int_gt[1024] |
103.5 µs | 122.5 µs | -15.56% |
| ❌ | Simulation | float_gt[1024] |
259.9 µs | 306.3 µs | -15.16% |
| ❌ | Simulation | or_chain[1024] |
1.2 ms | 1.4 ms | -15.14% |
| ❌ | Simulation | float_gt[16] |
237.9 µs | 280.2 µs | -15.09% |
| ❌ | Simulation | baseline_lt[4, 1024] |
81.3 µs | 93.7 µs | -13.19% |
| ❌ | Simulation | is_not_null_pred[1024] |
205.6 µs | 236.3 µs | -13% |
| ❌ | Simulation | is_not_null_pred[16] |
196.9 µs | 223.8 µs | -12% |
| ❌ | Simulation | baseline_eq[4, 1024] |
80.8 µs | 91.3 µs | -11.48% |
| ❌ | Simulation | int_gt[8192] |
144.9 µs | 163.4 µs | -11.31% |
| ❌ | Simulation | baseline_eq[16, 1024] |
82.2 µs | 92.5 µs | -11.16% |
| ... | ... | ... | ... | ... | ... |
ℹ️ 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/primitive-comparison-simd (d7f1683) with develop (97953be)
Footnotes
-
206 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. ↩
-
4 benchmarks were run, but are now archived. If they were deleted in another branch, consider rebasing to remove them from the report. Instead if they were added back, click here to restore them. ↩
Summary
Moves primitive comparisons onto
RowFnand removes the handwritten primitive lane-kernel fallback.Changes
PrimitiveComparedispatches every primitive type, comparison operator, and constant orientation through multiversionedRowVisitor::visit_bool. Cross-generated optimized x86-64 IR confirms vectorized row comparisons, but does not establish end-to-end benchmark parity.CodSpeed compares this layer directly against
develop. #9694 adds canonical validity attachment above it.