@@ -29,87 +29,88 @@ fn criterion_benchmark(c: &mut Criterion) {
2929 // All benches are single batch run with 8192 rows
3030 const N_ROWS : usize = 8192 ;
3131 const STR_LEN : usize = 16 ;
32- const NULL_DENSITY : f32 = 0.2 ;
3332 const UTF8_DENSITY_OF_ALL_ASCII : f32 = 0.0 ;
3433 const NORMAL_UTF8_DENSITY : f32 = 0.8 ;
3534
36- // StringArray ASCII only
37- let args_string_ascii = gen_string_array (
38- N_ROWS ,
39- STR_LEN ,
40- NULL_DENSITY ,
41- UTF8_DENSITY_OF_ALL_ASCII ,
42- false ,
43- ) ;
44- c. bench_function ( "ascii/string_ascii_only" , |b| {
45- b. iter ( || {
46- black_box ( ascii. invoke_with_args ( ScalarFunctionArgs {
47- args : args_string_ascii. clone ( ) ,
48- arg_fields : vec ! [ & Field :: new(
49- "a" ,
50- args_string_ascii[ 0 ] . data_type( ) ,
51- true ,
52- ) ] ,
53- number_rows : N_ROWS ,
54- return_field : & Field :: new ( "f" , DataType :: Utf8 , true ) ,
55- } ) )
56- } )
57- } ) ;
35+ for null_density in [ 0.0 , 0.5 ] {
36+ // StringArray ASCII only
37+ let args_string_ascii = gen_string_array (
38+ N_ROWS ,
39+ STR_LEN ,
40+ null_density,
41+ UTF8_DENSITY_OF_ALL_ASCII ,
42+ false ,
43+ ) ;
44+ c. bench_function ( format ! ( "ascii/string_ascii_only (null_density={null_density})" ) . as_str ( ) , |b| {
45+ b. iter ( || {
46+ black_box ( ascii. invoke_with_args ( ScalarFunctionArgs {
47+ args : args_string_ascii. clone ( ) ,
48+ arg_fields : vec ! [ & Field :: new(
49+ "a" ,
50+ args_string_ascii[ 0 ] . data_type( ) ,
51+ true ,
52+ ) ] ,
53+ number_rows : N_ROWS ,
54+ return_field : & Field :: new ( "f" , DataType :: Utf8 , true ) ,
55+ } ) )
56+ } )
57+ } ) ;
5858
59- // StringArray UTF8
60- let args_string_utf8 =
61- gen_string_array ( N_ROWS , STR_LEN , NULL_DENSITY , NORMAL_UTF8_DENSITY , false ) ;
62- c. bench_function ( "ascii/string_utf8" , |b| {
63- b. iter ( || {
64- black_box ( ascii. invoke_with_args ( ScalarFunctionArgs {
65- args : args_string_utf8. clone ( ) ,
66- arg_fields : vec ! [ & Field :: new( "a" , args_string_utf8[ 0 ] . data_type( ) , true ) ] ,
67- number_rows : N_ROWS ,
68- return_field : & Field :: new ( "f" , DataType :: Utf8 , true ) ,
69- } ) )
70- } )
71- } ) ;
59+ // StringArray UTF8
60+ let args_string_utf8 =
61+ gen_string_array ( N_ROWS , STR_LEN , null_density , NORMAL_UTF8_DENSITY , false ) ;
62+ c. bench_function ( format ! ( "ascii/string_utf8 (null_density={null_density})" ) . as_str ( ) , |b| {
63+ b. iter ( || {
64+ black_box ( ascii. invoke_with_args ( ScalarFunctionArgs {
65+ args : args_string_utf8. clone ( ) ,
66+ arg_fields : vec ! [ & Field :: new( "a" , args_string_utf8[ 0 ] . data_type( ) , true ) ] ,
67+ number_rows : N_ROWS ,
68+ return_field : & Field :: new ( "f" , DataType :: Utf8 , true ) ,
69+ } ) )
70+ } )
71+ } ) ;
7272
73- // StringViewArray ASCII only
74- let args_string_view_ascii = gen_string_array (
75- N_ROWS ,
76- STR_LEN ,
77- NULL_DENSITY ,
78- UTF8_DENSITY_OF_ALL_ASCII ,
79- true ,
80- ) ;
81- c. bench_function ( "ascii/string_view_ascii_only" , |b| {
82- b. iter ( || {
83- black_box ( ascii. invoke_with_args ( ScalarFunctionArgs {
84- args : args_string_view_ascii. clone ( ) ,
85- arg_fields : vec ! [ & Field :: new(
86- "a" ,
87- args_string_view_ascii[ 0 ] . data_type( ) ,
88- true ,
89- ) ] ,
90- number_rows : N_ROWS ,
91- return_field : & Field :: new ( "f" , DataType :: Utf8 , true ) ,
92- } ) )
93- } )
94- } ) ;
73+ // StringViewArray ASCII only
74+ let args_string_view_ascii = gen_string_array (
75+ N_ROWS ,
76+ STR_LEN ,
77+ null_density ,
78+ UTF8_DENSITY_OF_ALL_ASCII ,
79+ true ,
80+ ) ;
81+ c. bench_function ( format ! ( "ascii/string_view_ascii_only (null_density={null_density})" ) . as_str ( ) , |b| {
82+ b. iter ( || {
83+ black_box ( ascii. invoke_with_args ( ScalarFunctionArgs {
84+ args : args_string_view_ascii. clone ( ) ,
85+ arg_fields : vec ! [ & Field :: new(
86+ "a" ,
87+ args_string_view_ascii[ 0 ] . data_type( ) ,
88+ true ,
89+ ) ] ,
90+ number_rows : N_ROWS ,
91+ return_field : & Field :: new ( "f" , DataType :: Utf8 , true ) ,
92+ } ) )
93+ } )
94+ } ) ;
9595
96- // StringViewArray UTF8
97- let args_string_view_utf8 =
98- gen_string_array ( N_ROWS , STR_LEN , NULL_DENSITY , NORMAL_UTF8_DENSITY , true ) ;
99- c. bench_function ( "ascii/string_view_utf8" , |b| {
100- b. iter ( || {
101- black_box ( ascii. invoke_with_args ( ScalarFunctionArgs {
102- args : args_string_view_utf8. clone ( ) ,
103- arg_fields : vec ! [ & Field :: new(
104- "a" ,
105- args_string_view_utf8[ 0 ] . data_type( ) ,
106- true ,
107- ) ] ,
108- number_rows : N_ROWS ,
109- return_field : & Field :: new ( "f" , DataType :: Utf8 , true ) ,
110- } ) )
111- } )
112- } ) ;
96+ // StringViewArray UTF8
97+ let args_string_view_utf8 =
98+ gen_string_array ( N_ROWS , STR_LEN , null_density, NORMAL_UTF8_DENSITY , true ) ;
99+ c. bench_function ( format ! ( "ascii/string_view_utf8 (null_density={null_density})" ) . as_str ( ) , |b| {
100+ b. iter ( || {
101+ black_box ( ascii. invoke_with_args ( ScalarFunctionArgs {
102+ args : args_string_view_utf8. clone ( ) ,
103+ arg_fields : vec ! [ & Field :: new(
104+ "a" ,
105+ args_string_view_utf8[ 0 ] . data_type( ) ,
106+ true ,
107+ ) ] ,
108+ number_rows : N_ROWS ,
109+ return_field : & Field :: new ( "f" , DataType :: Utf8 , true ) ,
110+ } ) )
111+ } )
112+ } ) ;
113+ }
113114}
114115
115116criterion_group ! ( benches, criterion_benchmark) ;
0 commit comments