@@ -19,10 +19,11 @@ macro_rules! do_test_bench {
19
19
}
20
20
}
21
21
cost. push( now. elapsed( ) . as_micros( ) ) ;
22
- println!( "{} \t {} \t {:.2}%" , $name, cost. iter( ) . map( |v| v. to_string( ) ) . collect:: <Vec <_>>( ) . join( "\t " ) , hit as f64 * 100.0 / all as f64 ) ;
22
+ println!( "|{}|{}| {:.2}%| " , $name, cost. iter( ) . map( |v| v. to_string( ) ) . collect:: <Vec <_>>( ) . join( "\t " ) , hit as f64 * 100.0 / all as f64 ) ;
23
23
} ;
24
24
}
25
25
26
+ #[ allow( dead_code) ]
26
27
fn build_order_data ( num : usize ) -> Vec < ( usize , usize ) > {
27
28
let mut data = vec ! [ ] ;
28
29
for i in 0 ..num {
@@ -32,11 +33,11 @@ fn build_order_data(num: usize) -> Vec<(usize, usize)> {
32
33
data
33
34
}
34
35
36
+ #[ allow( dead_code) ]
35
37
fn build_freq_data ( num : usize ) -> Vec < ( usize , usize ) > {
36
38
let mut data = vec ! [ ] ;
37
39
for i in 0 ..num {
38
40
data. push ( ( i, i + 1 ) ) ;
39
- // data.push((i+1, i + 2));
40
41
let ridx = i / 4 + 1 ;
41
42
for _ in 0 ..1 {
42
43
data. push ( ( rand:: random :: < usize > ( ) % ridx, 0 ) ) ;
@@ -45,19 +46,38 @@ fn build_freq_data(num: usize) -> Vec<(usize, usize)> {
45
46
data
46
47
}
47
48
49
+
50
+ #[ allow( dead_code) ]
51
+ fn build_high_freq_data ( num : usize ) -> Vec < ( usize , usize ) > {
52
+ let mut data = vec ! [ ] ;
53
+ for i in 0 ..num {
54
+ data. push ( ( i, i + 1 ) ) ;
55
+ let ridx = ( i / 4 + 1 ) . min ( 1000 ) ;
56
+ for _ in 0 ..10 {
57
+ data. push ( ( rand:: random :: < usize > ( ) % ridx, 0 ) ) ;
58
+ }
59
+ for _ in 0 ..5 {
60
+ data. push ( ( i + num + rand:: random :: < usize > ( ) % num, i + 1 ) ) ;
61
+ }
62
+ }
63
+ data
64
+ }
65
+
48
66
fn do_bench ( num : usize ) {
49
67
let evict = num * 2 ;
50
68
let mut lru = LruCache :: < usize , usize , RandomState > :: new ( num) ;
51
69
let mut lruk = LruKCache :: < usize , usize , RandomState > :: new ( num) ;
52
70
let mut lfu = LfuCache :: < usize , usize , RandomState > :: new ( num) ;
53
71
let mut arc = ArcCache :: < usize , usize , RandomState > :: new ( num / 2 ) ;
54
- println ! ( "名字\t 耗时\t 命中率\t " ) ;
55
- let order_data = build_freq_data ( evict) ;
56
- do_test_bench ! ( "LruCache" , lru, num, evict, & order_data) ;
57
- // do_test_bench!("LruKCache", lruk, num, evict, &order_data);
58
- do_test_bench ! ( "LfuCache" , lfu, num, evict, & order_data) ;
59
- // do_test_bench!("ArcCache", arc, num, evict, &order_data);
60
- // println!("耗时:{}", set_timer);
72
+ println ! ( "|名字|耗时|命中率|" ) ;
73
+ println ! ( "|---|---|---|" ) ;
74
+ // let data = build_freq_data(evict);
75
+ let data = build_high_freq_data ( evict) ;
76
+ // let data = build_order_data(evict);
77
+ do_test_bench ! ( "LruCache" , lru, num, evict, & data) ;
78
+ do_test_bench ! ( "LruKCache" , lruk, num, evict, & data) ;
79
+ do_test_bench ! ( "LfuCache" , lfu, num, evict, & data) ;
80
+ do_test_bench ! ( "ArcCache" , arc, num, evict, & data) ;
61
81
}
62
82
63
83
fn main ( ) {
0 commit comments