diff --git a/arrow/benches/concatenate_kernel.rs b/arrow/benches/concatenate_kernel.rs index 034f5f2a305c..2304c40ab7fb 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::(8192, 0.0)) + .collect::>(); + 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::(8192, 0.5)) + .collect::>(); + 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::>(); + 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::>(); + 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::(1024, 0.0); let v2 = create_string_array::(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::(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::(8192, 0.0)) + .collect::>(); + 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::(8192, 0.5)) + .collect::>(); + 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::(10, 0.0, 20); let v1 = create_dict_from_values::(1024, 0.0, &v1); let v2 = create_string_array_with_len::(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::(1024, 0.5); - let v2 = create_string_array::(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,