@@ -53,6 +53,62 @@ fn add_benchmark(c: &mut Criterion) {
53
53
b. iter ( || bench_concat_arrays ( & arrays) )
54
54
} ) ;
55
55
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
+
56
112
let v1 = create_string_array :: < i32 > ( 1024 , 0.0 ) ;
57
113
let v2 = create_string_array :: < i32 > ( 1024 , 0.0 ) ;
58
114
c. bench_function ( "concat str 1024" , |b| b. iter ( || bench_concat ( & v1, & v2) ) ) ;
@@ -63,6 +119,32 @@ fn add_benchmark(c: &mut Criterion) {
63
119
b. iter ( || bench_concat ( & v1, & v2) )
64
120
} ) ;
65
121
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
+
66
148
let v1 = create_string_array_with_len :: < i32 > ( 10 , 0.0 , 20 ) ;
67
149
let v1 = create_dict_from_values :: < Int32Type > ( 1024 , 0.0 , & v1) ;
68
150
let v2 = create_string_array_with_len :: < i32 > ( 10 , 0.0 , 20 ) ;
@@ -79,12 +161,6 @@ fn add_benchmark(c: &mut Criterion) {
79
161
b. iter ( || bench_concat ( & v1, & v2) )
80
162
} ) ;
81
163
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
-
88
164
let v1 = FixedSizeListArray :: try_new (
89
165
Arc :: new ( Field :: new_list_field ( DataType :: Int32 , true ) ) ,
90
166
1024 ,
0 commit comments