Skip to content

Commit a35bdf0

Browse files
authored
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
1 parent cf6e041 commit a35bdf0

File tree

1 file changed

+82
-6
lines changed

1 file changed

+82
-6
lines changed

arrow/benches/concatenate_kernel.rs

+82-6
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,62 @@ fn add_benchmark(c: &mut Criterion) {
5353
b.iter(|| bench_concat_arrays(&arrays))
5454
});
5555

56+
{
57+
let input = (0..100)
58+
.map(|_| create_primitive_array::<Int32Type>(8192, 0.0))
59+
.collect::<Vec<_>>();
60+
let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn Array).collect();
61+
c.bench_function("concat i32 8192 over 100 arrays", |b| {
62+
b.iter(|| bench_concat_arrays(&arrays))
63+
});
64+
}
65+
66+
{
67+
let input = (0..100)
68+
.map(|_| create_primitive_array::<Int32Type>(8192, 0.5))
69+
.collect::<Vec<_>>();
70+
let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn Array).collect();
71+
c.bench_function("concat i32 nulls 8192 over 100 arrays", |b| {
72+
b.iter(|| bench_concat_arrays(&arrays))
73+
});
74+
}
75+
76+
let v1 = create_boolean_array(1024, 0.0, 0.5);
77+
let v2 = create_boolean_array(1024, 0.0, 0.5);
78+
c.bench_function("concat boolean 1024", |b| b.iter(|| bench_concat(&v1, &v2)));
79+
80+
let v1 = create_boolean_array(1024, 0.5, 0.5);
81+
let v2 = create_boolean_array(1024, 0.5, 0.5);
82+
c.bench_function("concat boolean nulls 1024", |b| {
83+
b.iter(|| bench_concat(&v1, &v2))
84+
});
85+
86+
let small_array = create_boolean_array(4, 0.0, 0.5);
87+
let arrays: Vec<_> = (0..1024).map(|_| &small_array as &dyn Array).collect();
88+
c.bench_function("concat 1024 arrays boolean 4", |b| {
89+
b.iter(|| bench_concat_arrays(&arrays))
90+
});
91+
92+
{
93+
let input = (0..100)
94+
.map(|_| create_boolean_array(8192, 0.0, 0.5))
95+
.collect::<Vec<_>>();
96+
let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn Array).collect();
97+
c.bench_function("concat boolean 8192 over 100 arrays", |b| {
98+
b.iter(|| bench_concat_arrays(&arrays))
99+
});
100+
}
101+
102+
{
103+
let input = (0..100)
104+
.map(|_| create_boolean_array(8192, 0.5, 0.5))
105+
.collect::<Vec<_>>();
106+
let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn Array).collect();
107+
c.bench_function("concat boolean nulls 8192 over 100 arrays", |b| {
108+
b.iter(|| bench_concat_arrays(&arrays))
109+
});
110+
}
111+
56112
let v1 = create_string_array::<i32>(1024, 0.0);
57113
let v2 = create_string_array::<i32>(1024, 0.0);
58114
c.bench_function("concat str 1024", |b| b.iter(|| bench_concat(&v1, &v2)));
@@ -63,6 +119,32 @@ fn add_benchmark(c: &mut Criterion) {
63119
b.iter(|| bench_concat(&v1, &v2))
64120
});
65121

122+
let small_array = create_string_array::<i32>(4, 0.0);
123+
let arrays: Vec<_> = (0..1024).map(|_| &small_array as &dyn Array).collect();
124+
c.bench_function("concat 1024 arrays str 4", |b| {
125+
b.iter(|| bench_concat_arrays(&arrays))
126+
});
127+
128+
{
129+
let input = (0..100)
130+
.map(|_| create_string_array::<i32>(8192, 0.0))
131+
.collect::<Vec<_>>();
132+
let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn Array).collect();
133+
c.bench_function("concat str 8192 over 100 arrays", |b| {
134+
b.iter(|| bench_concat_arrays(&arrays))
135+
});
136+
}
137+
138+
{
139+
let input = (0..100)
140+
.map(|_| create_string_array::<i32>(8192, 0.5))
141+
.collect::<Vec<_>>();
142+
let arrays: Vec<_> = input.iter().map(|arr| arr as &dyn Array).collect();
143+
c.bench_function("concat str nulls 8192 over 100 arrays", |b| {
144+
b.iter(|| bench_concat_arrays(&arrays))
145+
});
146+
}
147+
66148
let v1 = create_string_array_with_len::<i32>(10, 0.0, 20);
67149
let v1 = create_dict_from_values::<Int32Type>(1024, 0.0, &v1);
68150
let v2 = create_string_array_with_len::<i32>(10, 0.0, 20);
@@ -79,12 +161,6 @@ fn add_benchmark(c: &mut Criterion) {
79161
b.iter(|| bench_concat(&v1, &v2))
80162
});
81163

82-
let v1 = create_string_array::<i32>(1024, 0.5);
83-
let v2 = create_string_array::<i32>(1024, 0.5);
84-
c.bench_function("concat str nulls 1024", |b| {
85-
b.iter(|| bench_concat(&v1, &v2))
86-
});
87-
88164
let v1 = FixedSizeListArray::try_new(
89165
Arc::new(Field::new_list_field(DataType::Int32, true)),
90166
1024,

0 commit comments

Comments
 (0)