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 a35bdf0298 bench: add more {boolean, string, int} benchmarks for 
concat kernel (#7376)
a35bdf0298 is described below

commit a35bdf0298acc5b4e06db166d44cbcdf7789edb0
Author: Raz Luvaton <[email protected]>
AuthorDate: Wed Apr 2 17:41:53 2025 +0300

    bench: add more {boolean, string, int} benchmarks for concat kernel (#7376)
    
    * bench: add benchmarks for concat boolean and update string bench
    
    * move updated benchmark from #7309 to here
---
 arrow/benches/concatenate_kernel.rs | 88 ++++++++++++++++++++++++++++++++++---
 1 file changed, 82 insertions(+), 6 deletions(-)

diff --git a/arrow/benches/concatenate_kernel.rs 
b/arrow/benches/concatenate_kernel.rs
index 034f5f2a30..2304c40ab7 100644
--- a/arrow/benches/concatenate_kernel.rs
+++ b/arrow/benches/concatenate_kernel.rs
@@ -53,6 +53,62 @@ fn add_benchmark(c: &mut Criterion) {
         b.iter(|| bench_concat_arrays(&arrays))
     });
 
+    {
+        let input = (0..100)
+            .map(|_| create_primitive_array::<Int32Type>(8192, 0.0))
+            .collect::<Vec<_>>();
+        let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn 
Array).collect();
+        c.bench_function("concat i32 8192 over 100 arrays", |b| {
+            b.iter(|| bench_concat_arrays(&arrays))
+        });
+    }
+
+    {
+        let input = (0..100)
+            .map(|_| create_primitive_array::<Int32Type>(8192, 0.5))
+            .collect::<Vec<_>>();
+        let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn 
Array).collect();
+        c.bench_function("concat i32 nulls 8192 over 100 arrays", |b| {
+            b.iter(|| bench_concat_arrays(&arrays))
+        });
+    }
+
+    let v1 = create_boolean_array(1024, 0.0, 0.5);
+    let v2 = create_boolean_array(1024, 0.0, 0.5);
+    c.bench_function("concat boolean 1024", |b| b.iter(|| bench_concat(&v1, 
&v2)));
+
+    let v1 = create_boolean_array(1024, 0.5, 0.5);
+    let v2 = create_boolean_array(1024, 0.5, 0.5);
+    c.bench_function("concat boolean nulls 1024", |b| {
+        b.iter(|| bench_concat(&v1, &v2))
+    });
+
+    let small_array = create_boolean_array(4, 0.0, 0.5);
+    let arrays: Vec<_> = (0..1024).map(|_| &small_array as &dyn 
Array).collect();
+    c.bench_function("concat 1024 arrays boolean 4", |b| {
+        b.iter(|| bench_concat_arrays(&arrays))
+    });
+
+    {
+        let input = (0..100)
+            .map(|_| create_boolean_array(8192, 0.0, 0.5))
+            .collect::<Vec<_>>();
+        let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn 
Array).collect();
+        c.bench_function("concat boolean 8192 over 100 arrays", |b| {
+            b.iter(|| bench_concat_arrays(&arrays))
+        });
+    }
+
+    {
+        let input = (0..100)
+            .map(|_| create_boolean_array(8192, 0.5, 0.5))
+            .collect::<Vec<_>>();
+        let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn 
Array).collect();
+        c.bench_function("concat boolean nulls 8192 over 100 arrays", |b| {
+            b.iter(|| bench_concat_arrays(&arrays))
+        });
+    }
+
     let v1 = create_string_array::<i32>(1024, 0.0);
     let v2 = create_string_array::<i32>(1024, 0.0);
     c.bench_function("concat str 1024", |b| b.iter(|| bench_concat(&v1, &v2)));
@@ -63,6 +119,32 @@ fn add_benchmark(c: &mut Criterion) {
         b.iter(|| bench_concat(&v1, &v2))
     });
 
+    let small_array = create_string_array::<i32>(4, 0.0);
+    let arrays: Vec<_> = (0..1024).map(|_| &small_array as &dyn 
Array).collect();
+    c.bench_function("concat 1024 arrays str 4", |b| {
+        b.iter(|| bench_concat_arrays(&arrays))
+    });
+
+    {
+        let input = (0..100)
+            .map(|_| create_string_array::<i32>(8192, 0.0))
+            .collect::<Vec<_>>();
+        let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn 
Array).collect();
+        c.bench_function("concat str 8192 over 100 arrays", |b| {
+            b.iter(|| bench_concat_arrays(&arrays))
+        });
+    }
+
+    {
+        let input = (0..100)
+            .map(|_| create_string_array::<i32>(8192, 0.5))
+            .collect::<Vec<_>>();
+        let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn 
Array).collect();
+        c.bench_function("concat str nulls 8192 over 100 arrays", |b| {
+            b.iter(|| bench_concat_arrays(&arrays))
+        });
+    }
+
     let v1 = create_string_array_with_len::<i32>(10, 0.0, 20);
     let v1 = create_dict_from_values::<Int32Type>(1024, 0.0, &v1);
     let v2 = create_string_array_with_len::<i32>(10, 0.0, 20);
@@ -79,12 +161,6 @@ fn add_benchmark(c: &mut Criterion) {
         b.iter(|| bench_concat(&v1, &v2))
     });
 
-    let v1 = create_string_array::<i32>(1024, 0.5);
-    let v2 = create_string_array::<i32>(1024, 0.5);
-    c.bench_function("concat str nulls 1024", |b| {
-        b.iter(|| bench_concat(&v1, &v2))
-    });
-
     let v1 = FixedSizeListArray::try_new(
         Arc::new(Field::new_list_field(DataType::Int32, true)),
         1024,

Reply via email to