44// file that was distributed with this source code.
55
66use divan:: { Bencher , black_box} ;
7- use tempfile:: TempDir ;
87use uu_numfmt:: uumain;
9- use uucore:: benchmark:: { create_test_file, run_util_function} ;
10-
11- /// Generate numeric data for benchmarking
12- fn generate_numbers ( count : usize ) -> String {
13- ( 1 ..=count)
14- . map ( |n| n. to_string ( ) )
15- . collect :: < Vec < _ > > ( )
16- . join ( "\n " )
17- }
18-
19- /// Setup benchmark environment with test data
20- fn setup_benchmark ( data : String ) -> ( TempDir , String ) {
21- let temp_dir = tempfile:: tempdir ( ) . unwrap ( ) ;
22- let file_path = create_test_file ( data. as_bytes ( ) , temp_dir. path ( ) ) ;
23- let file_path_str = file_path. to_str ( ) . unwrap ( ) . to_string ( ) ;
24- ( temp_dir, file_path_str)
25- }
8+ use uucore:: benchmark:: { run_util_function, setup_test_file, text_data} ;
269
2710/// Benchmark SI formatting with different number counts
2811#[ divan:: bench( args = [ 1_000_000 ] ) ]
2912fn numfmt_to_si ( bencher : Bencher , count : usize ) {
30- let ( _temp_dir, file_path_str) = setup_benchmark ( generate_numbers ( count) ) ;
13+ let data = text_data:: generate_numbers ( count) ;
14+ let file_path = setup_test_file ( data. as_bytes ( ) ) ;
15+ let file_path_str = file_path. to_str ( ) . unwrap ( ) ;
3116
3217 bencher. bench ( || {
33- black_box ( run_util_function ( uumain, & [ "--to=si" , & file_path_str] ) ) ;
18+ black_box ( run_util_function ( uumain, & [ "--to=si" , file_path_str] ) ) ;
3419 } ) ;
3520}
3621
3722/// Benchmark SI formatting with precision format
3823#[ divan:: bench( args = [ 1_000_000 ] ) ]
3924fn numfmt_to_si_precision ( bencher : Bencher , count : usize ) {
40- let ( _temp_dir, file_path_str) = setup_benchmark ( generate_numbers ( count) ) ;
25+ let data = text_data:: generate_numbers ( count) ;
26+ let file_path = setup_test_file ( data. as_bytes ( ) ) ;
27+ let file_path_str = file_path. to_str ( ) . unwrap ( ) ;
4128
4229 bencher. bench ( || {
4330 black_box ( run_util_function (
4431 uumain,
45- & [ "--to=si" , "--format=%.6f" , & file_path_str] ,
32+ & [ "--to=si" , "--format=%.6f" , file_path_str] ,
4633 ) ) ;
4734 } ) ;
4835}
4936
5037/// Benchmark IEC (binary) formatting
5138#[ divan:: bench( args = [ 1_000_000 ] ) ]
5239fn numfmt_to_iec ( bencher : Bencher , count : usize ) {
53- let ( _temp_dir, file_path_str) = setup_benchmark ( generate_numbers ( count) ) ;
40+ let data = text_data:: generate_numbers ( count) ;
41+ let file_path = setup_test_file ( data. as_bytes ( ) ) ;
42+ let file_path_str = file_path. to_str ( ) . unwrap ( ) ;
5443
5544 bencher. bench ( || {
56- black_box ( run_util_function ( uumain, & [ "--to=iec" , & file_path_str] ) ) ;
45+ black_box ( run_util_function ( uumain, & [ "--to=iec" , file_path_str] ) ) ;
5746 } ) ;
5847}
5948
@@ -65,10 +54,11 @@ fn numfmt_from_si(bencher: Bencher, count: usize) {
6554 . map ( |n| format ! ( "{:.1}K" , n as f64 / 1000.0 ) )
6655 . collect :: < Vec < _ > > ( )
6756 . join ( "\n " ) ;
68- let ( _temp_dir, file_path_str) = setup_benchmark ( data) ;
57+ let file_path = setup_test_file ( data. as_bytes ( ) ) ;
58+ let file_path_str = file_path. to_str ( ) . unwrap ( ) ;
6959
7060 bencher. bench ( || {
71- black_box ( run_util_function ( uumain, & [ "--from=si" , & file_path_str] ) ) ;
61+ black_box ( run_util_function ( uumain, & [ "--from=si" , file_path_str] ) ) ;
7262 } ) ;
7363}
7464
@@ -80,37 +70,42 @@ fn numfmt_large_numbers_si(bencher: Bencher, count: usize) {
8070 . map ( |n| ( n * 1_000_000 ) . to_string ( ) )
8171 . collect :: < Vec < _ > > ( )
8272 . join ( "\n " ) ;
83- let ( _temp_dir, file_path_str) = setup_benchmark ( data) ;
73+ let file_path = setup_test_file ( data. as_bytes ( ) ) ;
74+ let file_path_str = file_path. to_str ( ) . unwrap ( ) ;
8475
8576 bencher. bench ( || {
86- black_box ( run_util_function ( uumain, & [ "--to=si" , & file_path_str] ) ) ;
77+ black_box ( run_util_function ( uumain, & [ "--to=si" , file_path_str] ) ) ;
8778 } ) ;
8879}
8980
9081/// Benchmark different padding widths
9182#[ divan:: bench( args = [ ( 1_000_000 , 5 ) , ( 1_000_000 , 50 ) ] ) ]
9283fn numfmt_padding ( bencher : Bencher , ( count, padding) : ( usize , usize ) ) {
93- let ( _temp_dir, file_path_str) = setup_benchmark ( generate_numbers ( count) ) ;
84+ let data = text_data:: generate_numbers ( count) ;
85+ let file_path = setup_test_file ( data. as_bytes ( ) ) ;
86+ let file_path_str = file_path. to_str ( ) . unwrap ( ) ;
9487 let padding_arg = format ! ( "--padding={padding}" ) ;
9588
9689 bencher. bench ( || {
9790 black_box ( run_util_function (
9891 uumain,
99- & [ "--to=si" , & padding_arg, & file_path_str] ,
92+ & [ "--to=si" , & padding_arg, file_path_str] ,
10093 ) ) ;
10194 } ) ;
10295}
10396
10497/// Benchmark round modes with SI formatting
10598#[ divan:: bench( args = [ ( "up" , 100_000 ) , ( "down" , 1_000_000 ) , ( "towards-zero" , 1_000_000 ) ] ) ]
10699fn numfmt_round_modes ( bencher : Bencher , ( round_mode, count) : ( & str , usize ) ) {
107- let ( _temp_dir, file_path_str) = setup_benchmark ( generate_numbers ( count) ) ;
100+ let data = text_data:: generate_numbers ( count) ;
101+ let file_path = setup_test_file ( data. as_bytes ( ) ) ;
102+ let file_path_str = file_path. to_str ( ) . unwrap ( ) ;
108103 let round_arg = format ! ( "--round={round_mode}" ) ;
109104
110105 bencher. bench ( || {
111106 black_box ( run_util_function (
112107 uumain,
113- & [ "--to=si" , & round_arg, & file_path_str] ,
108+ & [ "--to=si" , & round_arg, file_path_str] ,
114109 ) ) ;
115110 } ) ;
116111}
0 commit comments