@@ -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