1
1
use core:: iter;
2
2
3
- use criterion:: { BenchmarkId , Criterion , criterion_group, criterion_main, Throughput } ;
4
-
5
- use phone_encoder:: print_solution;
6
- use std:: io:: { self , BufWriter } ;
7
-
8
- static NUM_SRC : [ & str ; 7 ] = [ "123456" , "78901234" , "567890" , "123456789" , "012345" , "43210" , "98765432" ] ;
3
+ use criterion:: { BenchmarkId , black_box, Criterion , criterion_group, criterion_main, Throughput } ;
9
4
10
5
static WORD_SRC : [ & str ; 26 ] = [ "avocado" , "band" , "cereal" , "dialog" , "egg" , "french" ,
11
6
"gorilla" , "human" , "india" , "julia" , "kilogram" , "laureate" , "magic" , "nothing" , "ostensible" ,
@@ -20,23 +15,22 @@ fn generate_data(size: usize, source: &[&'static str]) -> Vec<&'static str> {
20
15
vec
21
16
}
22
17
23
- fn bench_print_solution ( c : & mut Criterion ) {
24
- let mut group = c. benchmark_group ( "phone_encoder " ) ;
18
+ fn bench_iterate_over_string_characters ( c : & mut Criterion ) {
19
+ let mut group = c. benchmark_group ( "str_iter " ) ;
25
20
for words in [ 1 , 10 , 20 , 30 , 40 , 50 ] . iter ( )
26
21
. map ( |size| generate_data ( * size as usize , & WORD_SRC ) ) {
27
- let num = generate_data ( 1 , & NUM_SRC ) . remove ( 0 ) ;
28
22
let size = words. len ( ) as u64 ;
29
23
group. throughput ( Throughput :: Elements ( size) ) ;
30
- let stderr = io:: stderr ( ) ;
31
- let mut out = BufWriter :: new ( stderr. lock ( ) ) ;
32
- group. bench_with_input ( BenchmarkId :: from_parameter ( size) , & ( num, words) , |b, ( num, words) | {
24
+ group. bench_with_input ( BenchmarkId :: from_parameter ( size) , & words, |b, words| {
33
25
b. iter ( || {
34
- print_solution ( num, words, & mut out) ;
26
+ for ch in words. iter ( ) . flat_map ( |w| w. chars ( ) ) {
27
+ let _ = black_box ( ch) ;
28
+ }
35
29
} ) ;
36
30
} ) ;
37
31
}
38
32
group. finish ( ) ;
39
33
}
40
34
41
- criterion_group ! ( benches, bench_print_solution ) ;
35
+ criterion_group ! ( benches, bench_iterate_over_string_characters ) ;
42
36
criterion_main ! ( benches) ;
0 commit comments