1515// specific language governing permissions and limitations
1616// under the License.
1717
18- use std:: sync:: Arc ;
19-
2018use arrow:: util:: bench_util:: { create_primitive_array, create_string_array} ;
21- use criterion:: { black_box, criterion_group, criterion_main, Criterion } ;
22- use datafusion:: {
23- arrow:: {
24- self ,
25- array:: ArrayRef ,
26- datatypes:: { DataType , Int32Type } ,
27- } ,
28- logical_expr:: Accumulator ,
29- } ;
19+ use criterion:: { Criterion , criterion_group, criterion_main} ;
20+ use datafusion:: { arrow, logical_expr:: Accumulator } ;
3021use datafusion_functions_extra:: common:: mode:: { BytesModeAccumulator , PrimitiveModeAccumulator } ;
22+ use std:: { hint, slice, sync} ;
3123
3224fn prepare_primitive_mode_accumulator ( ) -> Box < dyn Accumulator > {
33- Box :: new ( PrimitiveModeAccumulator :: < Int32Type > :: new ( & DataType :: Int32 ) )
25+ Box :: new (
26+ PrimitiveModeAccumulator :: < arrow:: datatypes:: Int32Type > :: new (
27+ & arrow:: datatypes:: DataType :: Int32 ,
28+ ) ,
29+ )
3430}
3531
3632fn prepare_bytes_mode_accumulator ( ) -> Box < dyn Accumulator > {
37- Box :: new ( BytesModeAccumulator :: new ( & DataType :: Utf8 ) )
33+ Box :: new ( BytesModeAccumulator :: new ( & arrow :: datatypes :: DataType :: Utf8 ) )
3834}
3935
40- fn mode_bench_primitive ( c : & mut Criterion , name : & str , values : ArrayRef ) {
36+ fn mode_bench_primitive ( c : & mut Criterion , name : & str , values : arrow :: array :: ArrayRef ) {
4137 let mut accumulator = prepare_primitive_mode_accumulator ( ) ;
4238 c. bench_function ( name, |b| {
4339 b. iter ( || {
44- accumulator. update_batch ( & [ values. clone ( ) ] ) . unwrap ( ) ;
45- black_box ( accumulator. evaluate ( ) . unwrap ( ) ) ;
40+ accumulator. update_batch ( slice :: from_ref ( & values) ) . unwrap ( ) ;
41+ hint :: black_box ( accumulator. evaluate ( ) . unwrap ( ) ) ;
4642 } ) ;
4743 } ) ;
4844}
4945
50- fn mode_bench_bytes ( c : & mut Criterion , name : & str , values : ArrayRef ) {
46+ fn mode_bench_bytes ( c : & mut Criterion , name : & str , values : arrow :: array :: ArrayRef ) {
5147 let mut accumulator = prepare_bytes_mode_accumulator ( ) ;
5248 c. bench_function ( name, |b| {
5349 b. iter ( || {
54- accumulator. update_batch ( & [ values. clone ( ) ] ) . unwrap ( ) ;
55- black_box ( accumulator. evaluate ( ) . unwrap ( ) ) ;
50+ accumulator. update_batch ( slice :: from_ref ( & values) ) . unwrap ( ) ;
51+ hint :: black_box ( accumulator. evaluate ( ) . unwrap ( ) ) ;
5652 } ) ;
5753 } ) ;
5854}
@@ -63,7 +59,10 @@ fn mode_benchmark(c: &mut Criterion) {
6359
6460 for & size in & sizes {
6561 for & null_percentage in & null_percentages {
66- let values = Arc :: new ( create_primitive_array :: < Int32Type > ( size, null_percentage) ) as ArrayRef ;
62+ let values = sync:: Arc :: new ( create_primitive_array :: < arrow:: datatypes:: Int32Type > (
63+ size,
64+ null_percentage,
65+ ) ) as arrow:: array:: ArrayRef ;
6766 let name = format ! (
6867 "PrimitiveModeAccumulator: {} elements, {}% nulls" ,
6968 size,
@@ -75,7 +74,8 @@ fn mode_benchmark(c: &mut Criterion) {
7574
7675 for & size in & sizes {
7776 for & null_percentage in & null_percentages {
78- let values = Arc :: new ( create_string_array :: < i32 > ( size, null_percentage) ) as ArrayRef ;
77+ let values = sync:: Arc :: new ( create_string_array :: < i32 > ( size, null_percentage) )
78+ as arrow:: array:: ArrayRef ;
7979 let name = format ! (
8080 "BytesModeAccumulator: {} elements, {}% nulls" ,
8181 size,
0 commit comments