-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Make push_batch_with_filter up to 3x faster for primitive types
#8951
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Make filtered coalescing faster for primitive
push_batch_with_filter faster for primitive types
push_batch_with_filter faster for primitive typespush_batch_with_filter faster for primitive types: up to 10x faster
push_batch_with_filter faster for primitive types: up to 10x fasterpush_batch_with_filter up to 10x faster for primitive types
|
@alamb you are probably interested in this |
|
YAAAAASSS -- this is exactly the type of thing I was hoping for with BatchCoalescer. I will check this out shortly |
| let filtered_batch = filter_record_batch(&batch, filter)?; | ||
| self.push_batch(filtered_batch) | ||
| // We only support primitve now, fallback to filter_record_batch for other types | ||
| // Also, skip optimization when filter is not very selective |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if always better to take into account biggest_coalesce_batch_size
|
run benchmark filter_kernels |
|
show benchmark queue |
|
🤖 Hi @alamb, you asked to view the benchmark queue (#8951 (comment)).
|
|
Hm it seems it contains a bug, probably makes the benchmark results off as well (will take a look tomorrow). |
|
🤖 |
|
🤖: Benchmark completed Details
|
|
run benchmark coalesce_kernels |
|
🤖 Hi @Dandandan, thanks for the request (#8951 (comment)).
Please choose one or more of these with |
push_batch_with_filter up to 10x faster for primitive typespush_batch_with_filter up to 2x faster for primitive types
push_batch_with_filter up to 2x faster for primitive typespush_batch_with_filter up to 3x faster for primitive types
|
@alamb I think it's ok now - I called AI (Opus 4.5) for some help on the Mainly needs some polish and seeing if we can improve the |
I added this to the allowed benchmarks |
|
run benchmark coalesce_kernels |
|
🤖 |
|
🤖: Benchmark completed Details
|
Pretty good I would say... probably have to look a bit more at the null-handling speed |
I feel there is a bunch of null handling performance to be had via work in I'll try and review this PR more carefully later today |
|
run benchmark coalesce_kernels filter_kernels |
|
@alamb seems we can play with the filter threshold value, probably a value with >=0.9 will give nice speedups, we might even go further based on some benchmark results |
|
run benchmark coalesce_kernels |
|
It is now faster in all cases on my machine 🚀 |
Which issue does this PR close?
Rationale for this change
What changes are included in this PR?
Are these changes tested?
Are there any user-facing changes?