This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/main by this push:
     new c77f08dc81 bench: Make `bench_built_filter` argument order consistent 
with `filter` kernel (#11204)
c77f08dc81 is described below

commit c77f08dc81149d797d8b1bb7941f149ae07d2dcc
Author: Andrew Lamb <[email protected]>
AuthorDate: Fri Sep 25 05:29:35 2026 -0400

    bench: Make `bench_built_filter` argument order consistent with `filter` 
kernel (#11204)
    
    # Which issue does this PR close?
    
    Follow on to
    https://github.com/apache/arrow-rs/pull/11203#discussion_r4098250273
    
    # Rationale for this change
    
    `bench_built_filter` took `(filter, data)` while `bench_filter` and the
    underlying [`filter`
    
](https://docs.rs/arrow/latest/arrow/compute/kernels/filter/fn.filter.html)kernel
    take `(data, filter)`. The inconsistent order made bugs like #11203 easy
    to introduce.
    
    # What changes are included in this PR?
    
    Change `bench_built_filter` to take `(array, filter)`, matching
    `filter(values, predicate)`, and update all call sites.
    
    # Are these changes tested?
    
    Bench compiles. No behavior change.
    
    # Are there any user-facing changes?
    
    No
    
    Co-authored-by: Claude Fable 5.1 <[email protected]>
---
 arrow/benches/filter_kernels.rs | 80 ++++++++++++++++++++---------------------
 1 file changed, 40 insertions(+), 40 deletions(-)

diff --git a/arrow/benches/filter_kernels.rs b/arrow/benches/filter_kernels.rs
index 06cf10ee6a..8d960ca8f9 100644
--- a/arrow/benches/filter_kernels.rs
+++ b/arrow/benches/filter_kernels.rs
@@ -32,7 +32,7 @@ fn bench_filter(data_array: &dyn Array, filter_array: 
&BooleanArray) {
     hint::black_box(filter(data_array, filter_array).unwrap());
 }
 
-fn bench_built_filter(filter: &FilterPredicate, array: &dyn Array) {
+fn bench_built_filter(array: &dyn Array, filter: &FilterPredicate) {
     hint::black_box(filter.filter(array).unwrap());
 }
 
@@ -71,13 +71,13 @@ fn add_benchmark(c: &mut Criterion) {
     });
 
     c.bench_function("filter context u8 (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function("filter context u8 high selectivity (kept 1023/1024)", 
|b| {
-        b.iter(|| bench_built_filter(&dense_filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &dense_filter))
     });
     c.bench_function("filter context u8 low selectivity (kept 1/1024)", |b| {
-        b.iter(|| bench_built_filter(&sparse_filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &sparse_filter))
     });
 
     let data_array = create_primitive_array::<Int32Type>(size, 0.0);
@@ -92,40 +92,40 @@ fn add_benchmark(c: &mut Criterion) {
     });
 
     c.bench_function("filter context i32 (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context i32 high selectivity (kept 1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function("filter context i32 low selectivity (kept 1/1024)", |b| {
-        b.iter(|| bench_built_filter(&sparse_filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &sparse_filter))
     });
 
     let data_array = create_primitive_array::<Int32Type>(size, 0.5);
     c.bench_function("filter context i32 w NULLs (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context i32 w NULLs high selectivity (kept 1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function(
         "filter context i32 w NULLs low selectivity (kept 1/1024)",
-        |b| b.iter(|| bench_built_filter(&sparse_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &sparse_filter)),
     );
 
     let data_array = create_primitive_array::<UInt8Type>(size, 0.5);
     c.bench_function("filter context u8 w NULLs (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context u8 w NULLs high selectivity (kept 1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function(
         "filter context u8 w NULLs low selectivity (kept 1/1024)",
-        |b| b.iter(|| bench_built_filter(&sparse_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &sparse_filter)),
     );
 
     let data_array = create_primitive_array::<Float32Type>(size, 0.5);
@@ -133,14 +133,14 @@ fn add_benchmark(c: &mut Criterion) {
         b.iter(|| bench_filter(&data_array, &filter_array))
     });
     c.bench_function("filter context f32 (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context f32 high selectivity (kept 1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function("filter context f32 low selectivity (kept 1/1024)", |b| {
-        b.iter(|| bench_built_filter(&sparse_filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &sparse_filter))
     });
 
     let data_array = create_primitive_array::<Decimal128Type>(size, 0.0);
@@ -155,53 +155,53 @@ fn add_benchmark(c: &mut Criterion) {
     });
 
     c.bench_function("filter context decimal128 (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context decimal128 high selectivity (kept 1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function(
         "filter context decimal128 low selectivity (kept 1/1024)",
-        |b| b.iter(|| bench_built_filter(&sparse_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &sparse_filter)),
     );
 
     let data_array = create_string_array::<i32>(size, 0.5);
     c.bench_function("filter context string (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context string high selectivity (kept 1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function("filter context string low selectivity (kept 1/1024)", 
|b| {
-        b.iter(|| bench_built_filter(&sparse_filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &sparse_filter))
     });
 
     let data_array = create_string_dict_array::<Int32Type>(size, 0.0, 4);
     c.bench_function("filter context string dictionary (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context string dictionary high selectivity (kept 1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function(
         "filter context string dictionary low selectivity (kept 1/1024)",
-        |b| b.iter(|| bench_built_filter(&sparse_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &sparse_filter)),
     );
 
     let data_array = create_string_dict_array::<Int32Type>(size, 0.5, 4);
     c.bench_function("filter context string dictionary w NULLs (kept 1/2)", 
|b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context string dictionary w NULLs high selectivity (kept 
1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function(
         "filter context string dictionary w NULLs low selectivity (kept 
1/1024)",
-        |b| b.iter(|| bench_built_filter(&sparse_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &sparse_filter)),
     );
 
     let mut add_benchmark_for_fsb_with_length = |value_length: usize| {
@@ -225,21 +225,21 @@ fn add_benchmark(c: &mut Criterion) {
 
         c.bench_function(
             format!("filter context fsb with value length {value_length} (kept 
1/2)").as_str(),
-            |b| b.iter(|| bench_built_filter(&filter, &data_array)),
+            |b| b.iter(|| bench_built_filter(&data_array, &filter)),
         );
         c.bench_function(
             format!(
                 "filter context fsb with value length {value_length} high 
selectivity (kept 1023/1024)"
             )
             .as_str(),
-            |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+            |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
         );
         c.bench_function(
             format!(
                 "filter context fsb with value length {value_length} low 
selectivity (kept 1/1024)"
             )
             .as_str(),
-            |b| b.iter(|| bench_built_filter(&sparse_filter, &data_array)),
+            |b| b.iter(|| bench_built_filter(&data_array, &sparse_filter)),
         );
     };
 
@@ -260,39 +260,39 @@ fn add_benchmark(c: &mut Criterion) {
 
     let data_array = create_string_view_array_with_len(size, 0.5, 4, false);
     c.bench_function("filter context short string view (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context short string view high selectivity (kept 1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function(
         "filter context short string view low selectivity (kept 1/1024)",
-        |b| b.iter(|| bench_built_filter(&sparse_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &sparse_filter)),
     );
 
     let data_array = create_string_view_array_with_len(size, 0.5, 4, true);
     c.bench_function("filter context mixed string view (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function(
         "filter context mixed string view high selectivity (kept 1023/1024)",
-        |b| b.iter(|| bench_built_filter(&dense_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &dense_filter)),
     );
     c.bench_function(
         "filter context mixed string view low selectivity (kept 1/1024)",
-        |b| b.iter(|| bench_built_filter(&sparse_filter, &data_array)),
+        |b| b.iter(|| bench_built_filter(&data_array, &sparse_filter)),
     );
 
     let data_array = create_primitive_run_array::<Int32Type, Int64Type>(size, 
size);
     c.bench_function("filter run array (kept 1/2)", |b| {
-        b.iter(|| bench_built_filter(&filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &filter))
     });
     c.bench_function("filter run array high selectivity (kept 1023/1024)", |b| 
{
-        b.iter(|| bench_built_filter(&dense_filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &dense_filter))
     });
     c.bench_function("filter run array low selectivity (kept 1/1024)", |b| {
-        b.iter(|| bench_built_filter(&sparse_filter, &data_array))
+        b.iter(|| bench_built_filter(&data_array, &sparse_filter))
     });
 }
 

Reply via email to