@@ -6,16 +6,35 @@ pub fn pack(c: &mut Criterion) {
66 let message_nil = Message :: Nil ;
77 let message_int = Message :: from ( i64:: MIN ) ;
88
9+ let m = MapEntry :: new ( "some-key" . into ( ) , 0 . into ( ) ) ;
10+ let message_map_1 = Message :: map ( vec ! [ m] ) ;
11+
12+ let m = ( 0 ..5 )
13+ . map ( |i| MapEntry :: new ( "some-key" . into ( ) , i. into ( ) ) )
14+ . collect :: < Vec < MapEntry > > ( ) ;
15+
16+ let message_map_5 = Message :: map ( m) ;
17+
18+ let m = ( 0 ..10 )
19+ . map ( |i| MapEntry :: new ( "some-key" . into ( ) , i. into ( ) ) )
20+ . collect :: < Vec < MapEntry > > ( ) ;
21+
22+ let message_map_10 = Message :: map ( m) ;
23+
924 let m = ( 0 ..100 )
1025 . map ( |i| MapEntry :: new ( "some-key" . into ( ) , i. into ( ) ) )
1126 . collect :: < Vec < MapEntry > > ( ) ;
1227
13- let message_map = Message :: map ( m) ;
28+ let message_map_100 = Message :: map ( m) ;
1429
1530 let mut buffer = vec ! [ 0u8 ; 4096 ] ;
1631
1732 c. bench_function ( "msgpack nil" , |b| {
18- b. iter ( || message_nil. pack ( black_box ( & mut buffer) ) . unwrap ( ) )
33+ b. iter ( || {
34+ message_nil
35+ . pack ( black_box ( & mut buffer. as_mut_slice ( ) ) )
36+ . unwrap ( )
37+ } )
1938 } ) ;
2039
2140 c. bench_function ( "msgunpack nil" , |b| {
@@ -27,7 +46,11 @@ pub fn pack(c: &mut Criterion) {
2746 } ) ;
2847
2948 c. bench_function ( "msgpack int" , |b| {
30- b. iter ( || message_int. pack ( black_box ( & mut buffer) ) . unwrap ( ) )
49+ b. iter ( || {
50+ message_int
51+ . pack ( black_box ( & mut buffer. as_mut_slice ( ) ) )
52+ . unwrap ( )
53+ } )
3154 } ) ;
3255
3356 c. bench_function ( "msgunpack int" , |b| {
@@ -38,15 +61,67 @@ pub fn pack(c: &mut Criterion) {
3861 b. iter ( || unsafe { MessageRef :: unpack ( black_box ( & mut buffer. as_slice ( ) ) ) . unwrap ( ) } )
3962 } ) ;
4063
41- c. bench_function ( "msgpack map" , |b| {
42- b. iter ( || message_map. pack ( black_box ( & mut buffer) ) . unwrap ( ) )
64+ c. bench_function ( "msgpack map 1" , |b| {
65+ b. iter ( || {
66+ message_map_1
67+ . pack ( black_box ( & mut buffer. as_mut_slice ( ) ) )
68+ . unwrap ( )
69+ } )
70+ } ) ;
71+
72+ c. bench_function ( "msgunpack map 1" , |b| {
73+ b. iter ( || Message :: unpack ( black_box ( & mut buffer. as_slice ( ) ) ) . unwrap ( ) )
74+ } ) ;
75+
76+ c. bench_function ( "msgunpack ref map 1" , |b| {
77+ b. iter ( || unsafe { MessageRef :: unpack ( black_box ( & mut buffer. as_slice ( ) ) ) . unwrap ( ) } )
78+ } ) ;
79+
80+ c. bench_function ( "msgpack map 5" , |b| {
81+ b. iter ( || {
82+ message_map_5
83+ . pack ( black_box ( & mut buffer. as_mut_slice ( ) ) )
84+ . unwrap ( )
85+ } )
86+ } ) ;
87+
88+ c. bench_function ( "msgunpack map 5" , |b| {
89+ b. iter ( || Message :: unpack ( black_box ( & mut buffer. as_slice ( ) ) ) . unwrap ( ) )
90+ } ) ;
91+
92+ c. bench_function ( "msgunpack ref map 5" , |b| {
93+ b. iter ( || unsafe { MessageRef :: unpack ( black_box ( & mut buffer. as_slice ( ) ) ) . unwrap ( ) } )
94+ } ) ;
95+
96+ c. bench_function ( "msgpack map 10" , |b| {
97+ b. iter ( || {
98+ message_map_10
99+ . pack ( black_box ( & mut buffer. as_mut_slice ( ) ) )
100+ . unwrap ( )
101+ } )
102+ } ) ;
103+
104+ c. bench_function ( "msgunpack map 10" , |b| {
105+ b. iter ( || Message :: unpack ( black_box ( & mut buffer. as_slice ( ) ) ) . unwrap ( ) )
106+ } ) ;
107+
108+ c. bench_function ( "msgunpack ref map 10" , |b| {
109+ b. iter ( || unsafe { MessageRef :: unpack ( black_box ( & mut buffer. as_slice ( ) ) ) . unwrap ( ) } )
110+ } ) ;
111+
112+ c. bench_function ( "msgpack map 100" , |b| {
113+ b. iter ( || {
114+ message_map_100
115+ . pack ( black_box ( & mut buffer. as_mut_slice ( ) ) )
116+ . unwrap ( )
117+ } )
43118 } ) ;
44119
45- c. bench_function ( "msgunpack map" , |b| {
120+ c. bench_function ( "msgunpack map 100 " , |b| {
46121 b. iter ( || Message :: unpack ( black_box ( & mut buffer. as_slice ( ) ) ) . unwrap ( ) )
47122 } ) ;
48123
49- c. bench_function ( "msgunpack ref map" , |b| {
124+ c. bench_function ( "msgunpack ref map 100 " , |b| {
50125 b. iter ( || unsafe { MessageRef :: unpack ( black_box ( & mut buffer. as_slice ( ) ) ) . unwrap ( ) } )
51126 } ) ;
52127}
0 commit comments