@@ -29,17 +29,15 @@ fn read_event(c: &mut Criterion) {
29
29
let mut group = c. benchmark_group ( "read_event" ) ;
30
30
group. bench_function ( "trim_text = false" , |b| {
31
31
b. iter ( || {
32
- let mut r = Reader :: from_reader ( SAMPLE ) ;
32
+ let mut r = Reader :: from_bytes ( SAMPLE ) ;
33
33
r. check_end_names ( false ) . check_comments ( false ) ;
34
34
let mut count = criterion:: black_box ( 0 ) ;
35
- let mut buf = Vec :: new ( ) ;
36
35
loop {
37
- match r. read_event_into ( & mut buf ) {
36
+ match r. read_event ( ) {
38
37
Ok ( Event :: Start ( _) ) | Ok ( Event :: Empty ( _) ) => count += 1 ,
39
38
Ok ( Event :: Eof ) => break ,
40
39
_ => ( ) ,
41
40
}
42
- buf. clear ( ) ;
43
41
}
44
42
assert_eq ! (
45
43
count, 1550 ,
@@ -50,19 +48,17 @@ fn read_event(c: &mut Criterion) {
50
48
51
49
group. bench_function ( "trim_text = true" , |b| {
52
50
b. iter ( || {
53
- let mut r = Reader :: from_reader ( SAMPLE ) ;
51
+ let mut r = Reader :: from_bytes ( SAMPLE ) ;
54
52
r. check_end_names ( false )
55
53
. check_comments ( false )
56
54
. trim_text ( true ) ;
57
55
let mut count = criterion:: black_box ( 0 ) ;
58
- let mut buf = Vec :: new ( ) ;
59
56
loop {
60
- match r. read_event_into ( & mut buf ) {
57
+ match r. read_event ( ) {
61
58
Ok ( Event :: Start ( _) ) | Ok ( Event :: Empty ( _) ) => count += 1 ,
62
59
Ok ( Event :: Eof ) => break ,
63
60
_ => ( ) ,
64
61
}
65
- buf. clear ( ) ;
66
62
}
67
63
assert_eq ! (
68
64
count, 1550 ,
@@ -79,18 +75,16 @@ fn read_namespaced_event(c: &mut Criterion) {
79
75
let mut group = c. benchmark_group ( "read_namespaced_event" ) ;
80
76
group. bench_function ( "trim_text = false" , |b| {
81
77
b. iter ( || {
82
- let mut r = Reader :: from_reader ( SAMPLE ) ;
78
+ let mut r = Reader :: from_bytes ( SAMPLE ) ;
83
79
r. check_end_names ( false ) . check_comments ( false ) ;
84
80
let mut count = criterion:: black_box ( 0 ) ;
85
- let mut buf = Vec :: new ( ) ;
86
81
let mut ns_buf = Vec :: new ( ) ;
87
82
loop {
88
83
match r. read_namespaced_event ( & mut ns_buf) {
89
84
Ok ( ( _, Event :: Start ( _) ) ) | Ok ( ( _, Event :: Empty ( _) ) ) => count += 1 ,
90
85
Ok ( ( _, Event :: Eof ) ) => break ,
91
86
_ => ( ) ,
92
87
}
93
- buf. clear ( ) ;
94
88
}
95
89
assert_eq ! (
96
90
count, 1550 ,
@@ -101,20 +95,18 @@ fn read_namespaced_event(c: &mut Criterion) {
101
95
102
96
group. bench_function ( "trim_text = true" , |b| {
103
97
b. iter ( || {
104
- let mut r = Reader :: from_reader ( SAMPLE ) ;
98
+ let mut r = Reader :: from_bytes ( SAMPLE ) ;
105
99
r. check_end_names ( false )
106
100
. check_comments ( false )
107
101
. trim_text ( true ) ;
108
102
let mut count = criterion:: black_box ( 0 ) ;
109
- let mut buf = Vec :: new ( ) ;
110
103
let mut ns_buf = Vec :: new ( ) ;
111
104
loop {
112
105
match r. read_namespaced_event ( & mut ns_buf) {
113
106
Ok ( ( _, Event :: Start ( _) ) ) | Ok ( ( _, Event :: Empty ( _) ) ) => count += 1 ,
114
107
Ok ( ( _, Event :: Eof ) ) => break ,
115
108
_ => ( ) ,
116
109
}
117
- buf. clear ( ) ;
118
110
}
119
111
assert_eq ! (
120
112
count, 1550 ,
@@ -130,78 +122,66 @@ fn one_event(c: &mut Criterion) {
130
122
let mut group = c. benchmark_group ( "One event" ) ;
131
123
group. bench_function ( "StartText" , |b| {
132
124
let src = "Hello world!" . repeat ( 512 / 12 ) . into_bytes ( ) ;
133
- let mut buf = Vec :: with_capacity ( 1024 ) ;
134
125
b. iter ( || {
135
- let mut r = Reader :: from_reader ( src. as_ref ( ) ) ;
126
+ let mut r = Reader :: from_bytes ( src. as_ref ( ) ) ;
136
127
let mut nbtxt = criterion:: black_box ( 0 ) ;
137
128
r. check_end_names ( false ) . check_comments ( false ) ;
138
- match r. read_event_into ( & mut buf ) {
129
+ match r. read_event ( ) {
139
130
Ok ( Event :: StartText ( e) ) => nbtxt += e. len ( ) ,
140
131
something_else => panic ! ( "Did not expect {:?}" , something_else) ,
141
132
} ;
142
133
143
- buf. clear ( ) ;
144
-
145
134
assert_eq ! ( nbtxt, 504 ) ;
146
135
} )
147
136
} ) ;
148
137
149
138
group. bench_function ( "Start" , |b| {
150
139
let src = format ! ( r#"<hello target="{}">"# , "world" . repeat( 512 / 5 ) ) . into_bytes ( ) ;
151
- let mut buf = Vec :: with_capacity ( 1024 ) ;
152
140
b. iter ( || {
153
- let mut r = Reader :: from_reader ( src. as_ref ( ) ) ;
141
+ let mut r = Reader :: from_bytes ( src. as_ref ( ) ) ;
154
142
let mut nbtxt = criterion:: black_box ( 0 ) ;
155
143
r. check_end_names ( false )
156
144
. check_comments ( false )
157
145
. trim_text ( true ) ;
158
- match r. read_event_into ( & mut buf ) {
146
+ match r. read_event ( ) {
159
147
Ok ( Event :: Start ( ref e) ) => nbtxt += e. len ( ) ,
160
148
something_else => panic ! ( "Did not expect {:?}" , something_else) ,
161
149
} ;
162
150
163
- buf. clear ( ) ;
164
-
165
151
assert_eq ! ( nbtxt, 525 ) ;
166
152
} )
167
153
} ) ;
168
154
169
155
group. bench_function ( "Comment" , |b| {
170
156
let src = format ! ( r#"<!-- hello "{}" -->"# , "world" . repeat( 512 / 5 ) ) . into_bytes ( ) ;
171
- let mut buf = Vec :: with_capacity ( 1024 ) ;
172
157
b. iter ( || {
173
- let mut r = Reader :: from_reader ( src. as_ref ( ) ) ;
158
+ let mut r = Reader :: from_bytes ( src. as_ref ( ) ) ;
174
159
let mut nbtxt = criterion:: black_box ( 0 ) ;
175
160
r. check_end_names ( false )
176
161
. check_comments ( false )
177
162
. trim_text ( true ) ;
178
- match r. read_event_into ( & mut buf ) {
163
+ match r. read_event ( ) {
179
164
Ok ( Event :: Comment ( e) ) => nbtxt += e. decode_and_unescape ( & r) . unwrap ( ) . len ( ) ,
180
165
something_else => panic ! ( "Did not expect {:?}" , something_else) ,
181
166
} ;
182
167
183
- buf. clear ( ) ;
184
-
185
168
assert_eq ! ( nbtxt, 520 ) ;
186
169
} )
187
170
} ) ;
188
171
189
172
group. bench_function ( "CData" , |b| {
190
173
let src = format ! ( r#"<![CDATA[hello "{}"]]>"# , "world" . repeat( 512 / 5 ) ) . into_bytes ( ) ;
191
- let mut buf = Vec :: with_capacity ( 1024 ) ;
192
174
b. iter ( || {
193
- let mut r = Reader :: from_reader ( src. as_ref ( ) ) ;
175
+ let mut r = Reader :: from_bytes ( src. as_ref ( ) ) ;
194
176
let mut nbtxt = criterion:: black_box ( 0 ) ;
195
177
r. check_end_names ( false )
196
178
. check_comments ( false )
197
179
. trim_text ( true ) ;
198
- match r. read_event_into ( & mut buf ) {
180
+ match r. read_event ( ) {
199
181
Ok ( Event :: CData ( ref e) ) => nbtxt += e. len ( ) ,
200
182
something_else => panic ! ( "Did not expect {:?}" , something_else) ,
201
183
} ;
202
184
203
- buf. clear ( ) ;
204
-
205
185
assert_eq ! ( nbtxt, 518 ) ;
206
186
} )
207
187
} ) ;
@@ -213,12 +193,11 @@ fn attributes(c: &mut Criterion) {
213
193
let mut group = c. benchmark_group ( "attributes" ) ;
214
194
group. bench_function ( "with_checks = true" , |b| {
215
195
b. iter ( || {
216
- let mut r = Reader :: from_reader ( PLAYERS ) ;
196
+ let mut r = Reader :: from_bytes ( PLAYERS ) ;
217
197
r. check_end_names ( false ) . check_comments ( false ) ;
218
198
let mut count = criterion:: black_box ( 0 ) ;
219
- let mut buf = Vec :: new ( ) ;
220
199
loop {
221
- match r. read_event_into ( & mut buf ) {
200
+ match r. read_event ( ) {
222
201
Ok ( Event :: Empty ( e) ) => {
223
202
for attr in e. attributes ( ) {
224
203
let _attr = attr. unwrap ( ) ;
@@ -228,20 +207,18 @@ fn attributes(c: &mut Criterion) {
228
207
Ok ( Event :: Eof ) => break ,
229
208
_ => ( ) ,
230
209
}
231
- buf. clear ( ) ;
232
210
}
233
211
assert_eq ! ( count, 1041 ) ;
234
212
} )
235
213
} ) ;
236
214
237
215
group. bench_function ( "with_checks = false" , |b| {
238
216
b. iter ( || {
239
- let mut r = Reader :: from_reader ( PLAYERS ) ;
217
+ let mut r = Reader :: from_bytes ( PLAYERS ) ;
240
218
r. check_end_names ( false ) . check_comments ( false ) ;
241
219
let mut count = criterion:: black_box ( 0 ) ;
242
- let mut buf = Vec :: new ( ) ;
243
220
loop {
244
- match r. read_event_into ( & mut buf ) {
221
+ match r. read_event ( ) {
245
222
Ok ( Event :: Empty ( e) ) => {
246
223
for attr in e. attributes ( ) . with_checks ( false ) {
247
224
let _attr = attr. unwrap ( ) ;
@@ -251,20 +228,18 @@ fn attributes(c: &mut Criterion) {
251
228
Ok ( Event :: Eof ) => break ,
252
229
_ => ( ) ,
253
230
}
254
- buf. clear ( ) ;
255
231
}
256
232
assert_eq ! ( count, 1041 ) ;
257
233
} )
258
234
} ) ;
259
235
260
236
group. bench_function ( "try_get_attribute" , |b| {
261
237
b. iter ( || {
262
- let mut r = Reader :: from_reader ( PLAYERS ) ;
238
+ let mut r = Reader :: from_bytes ( PLAYERS ) ;
263
239
r. check_end_names ( false ) . check_comments ( false ) ;
264
240
let mut count = criterion:: black_box ( 0 ) ;
265
- let mut buf = Vec :: new ( ) ;
266
241
loop {
267
- match r. read_event_into ( & mut buf ) {
242
+ match r. read_event ( ) {
268
243
Ok ( Event :: Empty ( e) ) if e. name ( ) == QName ( b"player" ) => {
269
244
for name in [ "num" , "status" , "avg" ] {
270
245
if let Some ( _attr) = e. try_get_attribute ( name) . unwrap ( ) {
@@ -279,7 +254,6 @@ fn attributes(c: &mut Criterion) {
279
254
Ok ( Event :: Eof ) => break ,
280
255
_ => ( ) ,
281
256
}
282
- buf. clear ( ) ;
283
257
}
284
258
assert_eq ! ( count, 150 ) ;
285
259
} )
0 commit comments