diff --git a/arrow/benches/interleave_kernels.rs b/arrow/benches/interleave_kernels.rs index 60125a4ee364..f906416acbd4 100644 --- a/arrow/benches/interleave_kernels.rs +++ b/arrow/benches/interleave_kernels.rs @@ -30,6 +30,7 @@ use arrow::util::test_util::seedable_rng; use arrow::{array::*, util::bench_util::*}; use arrow_select::interleave::interleave; use std::hint; +use std::sync::Arc; fn do_bench( c: &mut Criterion, @@ -74,6 +75,42 @@ fn add_benchmark(c: &mut Criterion) { let values = create_string_array_with_len::(10, 0.0, 20); let dict = create_dict_from_values::(1024, 0.0, &values); + let struct_i32_no_nulls_i32_no_nulls = StructArray::new( + Fields::from(vec![ + Field::new("a", Int32Type::DATA_TYPE, false), + Field::new("b", Int32Type::DATA_TYPE, false), + ]), + vec![ + Arc::new(create_primitive_array::(1024, 0.)), + Arc::new(create_primitive_array::(1024, 0.)), + ], + None, + ); + + let struct_string_no_nulls_string_no_nulls = StructArray::new( + Fields::from(vec![ + Field::new("a", DataType::Utf8, false), + Field::new("b", DataType::Utf8, false), + ]), + vec![ + Arc::new(create_string_array_with_len::(1024, 0., 20)), + Arc::new(create_string_array_with_len::(1024, 0., 20)), + ], + None, + ); + + let struct_i32_no_nulls_string_no_nulls = StructArray::new( + Fields::from(vec![ + Field::new("a", DataType::Int32, false), + Field::new("b", DataType::Utf8, false), + ]), + vec![ + Arc::new(create_primitive_array::(1024, 0.)), + Arc::new(create_string_array_with_len::(1024, 0., 20)), + ], + None, + ); + let values = create_string_array_with_len::(1024, 0.0, 20); let sparse_dict = create_sparse_dict_from_values::(1024, 0.0, &values, 10..20); @@ -87,6 +124,18 @@ fn add_benchmark(c: &mut Criterion) { ("dict(20, 0.0)", &dict), ("dict_sparse(20, 0.0)", &sparse_dict), ("str_view(0.0)", &string_view), + ( + "struct(i32(0.0), i32(0.0)", + &struct_i32_no_nulls_i32_no_nulls, + ), + ( + "struct(str(20, 0.0), str(20, 0.0))", + &struct_string_no_nulls_string_no_nulls, + ), + ( + "struct(i32(0.0), str(20, 0.0)", + &struct_i32_no_nulls_string_no_nulls, + ), ]; for (prefix, base) in cases {