perf(NullBuffer::Exapand) optimize 8 byte chunks - #10976
Conversation
|
run benchmark boolean_kernels |
|
🤖 Arrow criterion benchmark running (GKE) | trigger CPU Details (lscpu)Comparing rich-T-kid/optimize-NullBuff-expand (704c4c9) to ec21627 (merge-base) diff Run configurationrun benchmark boolean_kernels
env:
BENCH_FILTER: "null_buffer_expand"BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench boolean_kernels File an issue against this benchmark runner |
|
🤖 Arrow criterion benchmark completed (GKE) | trigger Instance: Comparing rich-T-kid/optimize-NullBuff-expand (704c4c9) to ec21627 (merge-base) diff Run configurationrun benchmark boolean_kernels
env:
BENCH_FILTER: "null_buffer_expand"CPU Details (lscpu)Details
Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
144x 😄 |
|
run benchmark boolean_kernels |
1 similar comment
|
run benchmark boolean_kernels |
|
🤖 Arrow criterion benchmark running (GKE) | trigger CPU Details (lscpu)Comparing rich-T-kid/optimize-NullBuff-expand (3395a25) to ec21627 (merge-base) diff Run configurationrun benchmark boolean_kernels
env:
BENCH_FILTER: "null_buffer_expand"BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench boolean_kernels File an issue against this benchmark runner |
|
🤖 Arrow criterion benchmark running (GKE) | trigger CPU Details (lscpu)Comparing rich-T-kid/optimize-NullBuff-expand (4272daa) to ec21627 (merge-base) diff Run configurationrun benchmark boolean_kernels
env:
BENCH_FILTER: "null_buffer_expand"BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench boolean_kernels File an issue against this benchmark runner |
|
🤖 Arrow criterion benchmark completed (GKE) | trigger Instance: Comparing rich-T-kid/optimize-NullBuff-expand (3395a25) to ec21627 (merge-base) diff Run configurationrun benchmark boolean_kernels
env:
BENCH_FILTER: "null_buffer_expand"CPU Details (lscpu)Details
Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Arrow criterion benchmark completed (GKE) | trigger Instance: Comparing rich-T-kid/optimize-NullBuff-expand (4272daa) to ec21627 (merge-base) diff Run configurationrun benchmark boolean_kernels
env:
BENCH_FILTER: "null_buffer_expand"CPU Details (lscpu)Details
Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
run benchmark take_kernels |
|
🤖 Arrow criterion benchmark running (GKE) | trigger CPU Details (lscpu)Comparing rich-T-kid/optimize-NullBuff-expand (4272daa) to ec21627 (merge-base) diff Run configurationrun benchmark take_kernels
env:
BENCH_FILTER: "fixed_size_list"BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench take_kernels File an issue against this benchmark runner |
|
🤖 Arrow criterion benchmark completed (GKE) | trigger Instance: Comparing rich-T-kid/optimize-NullBuff-expand (4272daa) to ec21627 (merge-base) diff Run configurationrun benchmark take_kernels
env:
BENCH_FILTER: "fixed_size_list"CPU Details (lscpu)Details
Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
thanks for this @Rich-T-kid good numbers on the benchmarks 🚀 |
Which issue does this PR close?
NullBuffer::expand#10883.Rationale for this change
see #10883.
NullBuffer::expandrepeats each validity bit count times, used whenever a parent null must be propagated to a fixed-size group of child elements. The previous implementation set output bits one at a time regardless of count, which is unnecessarily slow for common sizes.What changes are included in this PR?
Three tiered fast paths are added to try_expand, checked in order:
Are these changes tested?
yes, existing test cover this as well as 1 new test
Are there any user-facing changes?
no