Repository navigation
WIP string speed up (hash) - #26157
Rich-T-kid wants to merge 1 commit into
Conversation
Specialize the Utf8View/BinaryView hash dispatch: - Inlined-only paths (no external buffers) get an unrolled u128 hot loop for fresh and rehash. Lane widths are narrower than the primitive variants (8-way fresh, 4-way rehash) to avoid spilling u128 lanes. - Nullable inlined-only paths walk the null bitmap in u64 chunks and branchlessly csel-blend mixed chunks, instead of paying per-row `is_null`. - Buffered paths (external data buffers) keep the per-row loop since buffer-load latency dominates the null check. Measured on M4 Max, BATCH_SIZE=8192, 3% null density: | case | before | after | Δ | |-------------------------------------|-----------|-----------|--------| | utf8_view: single, no nulls | 19.11 µs | 17.23 µs | -9.8% | | utf8_view: multiple, no nulls (3) | 54.13 µs | 53.31 µs | -1.5% | | utf8_view: single, nulls | 19.62 µs | 19.54 µs | -0.4% | | utf8_view: multiple, nulls (3) | 58.86 µs | 58.03 µs | -1.4% | | utf8_view (small): single, no nulls | 2.55 µs | 2.25 µs | -11.6% | | utf8_view (small): multiple, no | 9.77 µs | 8.47 µs | -13.3% | | utf8_view (small): single, nulls | 6.91 µs | 3.65 µs | -47.2% | | utf8_view (small): multiple, nulls | 20.43 µs | 10.18 µs | -50.2% |
|
run benchmark with_hashes |
|
Benchmark for this request failed before finishing (Kubernetes reason: Benchmarks requested: Runner log (last 40 lines)Kubernetes messageFile an issue against this benchmark runner |
|
run benchmark with_hashes |
|
Benchmark for this request failed before finishing (Kubernetes reason: Benchmarks requested: Runner log (last 40 lines)Kubernetes messageFile an issue against this benchmark runner |
|
run benchmark with_hashes |
|
Benchmark for this request failed before finishing (Kubernetes reason: Benchmarks requested: Runner log (last 40 lines)Kubernetes messageFile an issue against this benchmark runner |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #26157 +/- ##
==========================================
+ Coverage 81.38% 82.77% +1.38%
==========================================
Files 1116 1147 +31
Lines 397960 451020 +53060
Branches 397960 451020 +53060
==========================================
+ Hits 323880 373319 +49439
+ Misses 55120 54975 -145
- Partials 18960 22726 +3766 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
run benchmark with_hashes |
|
Benchmark for this request failed before finishing (Kubernetes reason: Benchmarks requested: Runner log (last 40 lines)Kubernetes messageFile an issue against this benchmark runner |
|
run benchmark with_hashes |
|
Benchmark for this request failed before finishing (Kubernetes reason: Benchmarks requested: Runner log (last 40 lines)Kubernetes messageFile an issue against this benchmark runner |
Specialize the Utf8View/BinaryView hash dispatch:
is_null.Measured on M4 Max, BATCH_SIZE=8192, 3% null density:
Which issue does this PR close?
Rationale for this change
What changes are included in this PR?
What is the testing strategy for this PR?
Are there any user-facing changes?