@@ -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
- match r. read_namespaced_event ( & mut buf , & mut ns_buf) {
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
- match r. read_namespaced_event ( & mut buf , & mut ns_buf) {
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 ,
@@ -131,19 +123,17 @@ fn bytes_text_unescaped(c: &mut Criterion) {
131
123
let mut group = c. benchmark_group ( "BytesText::unescaped" ) ;
132
124
group. bench_function ( "trim_text = false" , |b| {
133
125
b. iter ( || {
134
- let mut buf = Vec :: new ( ) ;
135
- let mut r = Reader :: from_reader ( SAMPLE ) ;
126
+ let mut r = Reader :: from_bytes ( SAMPLE ) ;
136
127
r. check_end_names ( false ) . check_comments ( false ) ;
137
128
let mut count = criterion:: black_box ( 0 ) ;
138
129
let mut nbtxt = criterion:: black_box ( 0 ) ;
139
130
loop {
140
- match r. read_event_into ( & mut buf ) {
131
+ match r. read_event ( ) {
141
132
Ok ( Event :: Start ( _) ) | Ok ( Event :: Empty ( _) ) => count += 1 ,
142
133
Ok ( Event :: Text ( ref e) ) => nbtxt += e. unescaped ( ) . unwrap ( ) . len ( ) ,
143
134
Ok ( Event :: Eof ) => break ,
144
135
_ => ( ) ,
145
136
}
146
- buf. clear ( ) ;
147
137
}
148
138
assert_eq ! (
149
139
count, 1550 ,
@@ -167,21 +157,19 @@ fn bytes_text_unescaped(c: &mut Criterion) {
167
157
168
158
group. bench_function ( "trim_text = true" , |b| {
169
159
b. iter ( || {
170
- let mut buf = Vec :: new ( ) ;
171
- let mut r = Reader :: from_reader ( SAMPLE ) ;
160
+ let mut r = Reader :: from_bytes ( SAMPLE ) ;
172
161
r. check_end_names ( false )
173
162
. check_comments ( false )
174
163
. trim_text ( true ) ;
175
164
let mut count = criterion:: black_box ( 0 ) ;
176
165
let mut nbtxt = criterion:: black_box ( 0 ) ;
177
166
loop {
178
- match r. read_event_into ( & mut buf ) {
167
+ match r. read_event ( ) {
179
168
Ok ( Event :: Start ( _) ) | Ok ( Event :: Empty ( _) ) => count += 1 ,
180
169
Ok ( Event :: Text ( ref e) ) => nbtxt += e. unescaped ( ) . unwrap ( ) . len ( ) ,
181
170
Ok ( Event :: Eof ) => break ,
182
171
_ => ( ) ,
183
172
}
184
- buf. clear ( ) ;
185
173
}
186
174
assert_eq ! (
187
175
count, 1550 ,
@@ -210,78 +198,66 @@ fn one_event(c: &mut Criterion) {
210
198
let mut group = c. benchmark_group ( "One event" ) ;
211
199
group. bench_function ( "StartText" , |b| {
212
200
let src = "Hello world!" . repeat ( 512 / 12 ) . into_bytes ( ) ;
213
- let mut buf = Vec :: with_capacity ( 1024 ) ;
214
201
b. iter ( || {
215
- let mut r = Reader :: from_reader ( src. as_ref ( ) ) ;
202
+ let mut r = Reader :: from_bytes ( src. as_ref ( ) ) ;
216
203
let mut nbtxt = criterion:: black_box ( 0 ) ;
217
204
r. check_end_names ( false ) . check_comments ( false ) ;
218
- match r. read_event_into ( & mut buf ) {
205
+ match r. read_event ( ) {
219
206
Ok ( Event :: StartText ( e) ) => nbtxt += e. len ( ) ,
220
207
something_else => panic ! ( "Did not expect {:?}" , something_else) ,
221
208
} ;
222
209
223
- buf. clear ( ) ;
224
-
225
210
assert_eq ! ( nbtxt, 504 ) ;
226
211
} )
227
212
} ) ;
228
213
229
214
group. bench_function ( "Start" , |b| {
230
215
let src = format ! ( r#"<hello target="{}">"# , "world" . repeat( 512 / 5 ) ) . into_bytes ( ) ;
231
- let mut buf = Vec :: with_capacity ( 1024 ) ;
232
216
b. iter ( || {
233
- let mut r = Reader :: from_reader ( src. as_ref ( ) ) ;
217
+ let mut r = Reader :: from_bytes ( src. as_ref ( ) ) ;
234
218
let mut nbtxt = criterion:: black_box ( 0 ) ;
235
219
r. check_end_names ( false )
236
220
. check_comments ( false )
237
221
. trim_text ( true ) ;
238
- match r. read_event_into ( & mut buf ) {
222
+ match r. read_event ( ) {
239
223
Ok ( Event :: Start ( ref e) ) => nbtxt += e. len ( ) ,
240
224
something_else => panic ! ( "Did not expect {:?}" , something_else) ,
241
225
} ;
242
226
243
- buf. clear ( ) ;
244
-
245
227
assert_eq ! ( nbtxt, 525 ) ;
246
228
} )
247
229
} ) ;
248
230
249
231
group. bench_function ( "Comment" , |b| {
250
232
let src = format ! ( r#"<!-- hello "{}" -->"# , "world" . repeat( 512 / 5 ) ) . into_bytes ( ) ;
251
- let mut buf = Vec :: with_capacity ( 1024 ) ;
252
233
b. iter ( || {
253
- let mut r = Reader :: from_reader ( src. as_ref ( ) ) ;
234
+ let mut r = Reader :: from_bytes ( src. as_ref ( ) ) ;
254
235
let mut nbtxt = criterion:: black_box ( 0 ) ;
255
236
r. check_end_names ( false )
256
237
. check_comments ( false )
257
238
. trim_text ( true ) ;
258
- match r. read_event_into ( & mut buf ) {
239
+ match r. read_event ( ) {
259
240
Ok ( Event :: Comment ( ref e) ) => nbtxt += e. unescaped ( ) . unwrap ( ) . len ( ) ,
260
241
something_else => panic ! ( "Did not expect {:?}" , something_else) ,
261
242
} ;
262
243
263
- buf. clear ( ) ;
264
-
265
244
assert_eq ! ( nbtxt, 520 ) ;
266
245
} )
267
246
} ) ;
268
247
269
248
group. bench_function ( "CData" , |b| {
270
249
let src = format ! ( r#"<![CDATA[hello "{}"]]>"# , "world" . repeat( 512 / 5 ) ) . into_bytes ( ) ;
271
- let mut buf = Vec :: with_capacity ( 1024 ) ;
272
250
b. iter ( || {
273
- let mut r = Reader :: from_reader ( src. as_ref ( ) ) ;
251
+ let mut r = Reader :: from_bytes ( src. as_ref ( ) ) ;
274
252
let mut nbtxt = criterion:: black_box ( 0 ) ;
275
253
r. check_end_names ( false )
276
254
. check_comments ( false )
277
255
. trim_text ( true ) ;
278
- match r. read_event_into ( & mut buf ) {
256
+ match r. read_event ( ) {
279
257
Ok ( Event :: CData ( ref e) ) => nbtxt += e. len ( ) ,
280
258
something_else => panic ! ( "Did not expect {:?}" , something_else) ,
281
259
} ;
282
260
283
- buf. clear ( ) ;
284
-
285
261
assert_eq ! ( nbtxt, 518 ) ;
286
262
} )
287
263
} ) ;
@@ -293,12 +269,11 @@ fn attributes(c: &mut Criterion) {
293
269
let mut group = c. benchmark_group ( "attributes" ) ;
294
270
group. bench_function ( "with_checks = true" , |b| {
295
271
b. iter ( || {
296
- let mut r = Reader :: from_reader ( PLAYERS ) ;
272
+ let mut r = Reader :: from_bytes ( PLAYERS ) ;
297
273
r. check_end_names ( false ) . check_comments ( false ) ;
298
274
let mut count = criterion:: black_box ( 0 ) ;
299
- let mut buf = Vec :: new ( ) ;
300
275
loop {
301
- match r. read_event_into ( & mut buf ) {
276
+ match r. read_event ( ) {
302
277
Ok ( Event :: Empty ( e) ) => {
303
278
for attr in e. attributes ( ) {
304
279
let _attr = attr. unwrap ( ) ;
@@ -308,20 +283,18 @@ fn attributes(c: &mut Criterion) {
308
283
Ok ( Event :: Eof ) => break ,
309
284
_ => ( ) ,
310
285
}
311
- buf. clear ( ) ;
312
286
}
313
287
assert_eq ! ( count, 1041 ) ;
314
288
} )
315
289
} ) ;
316
290
317
291
group. bench_function ( "with_checks = false" , |b| {
318
292
b. iter ( || {
319
- let mut r = Reader :: from_reader ( PLAYERS ) ;
293
+ let mut r = Reader :: from_bytes ( PLAYERS ) ;
320
294
r. check_end_names ( false ) . check_comments ( false ) ;
321
295
let mut count = criterion:: black_box ( 0 ) ;
322
- let mut buf = Vec :: new ( ) ;
323
296
loop {
324
- match r. read_event_into ( & mut buf ) {
297
+ match r. read_event ( ) {
325
298
Ok ( Event :: Empty ( e) ) => {
326
299
for attr in e. attributes ( ) . with_checks ( false ) {
327
300
let _attr = attr. unwrap ( ) ;
@@ -331,20 +304,18 @@ fn attributes(c: &mut Criterion) {
331
304
Ok ( Event :: Eof ) => break ,
332
305
_ => ( ) ,
333
306
}
334
- buf. clear ( ) ;
335
307
}
336
308
assert_eq ! ( count, 1041 ) ;
337
309
} )
338
310
} ) ;
339
311
340
312
group. bench_function ( "try_get_attribute" , |b| {
341
313
b. iter ( || {
342
- let mut r = Reader :: from_reader ( PLAYERS ) ;
314
+ let mut r = Reader :: from_bytes ( PLAYERS ) ;
343
315
r. check_end_names ( false ) . check_comments ( false ) ;
344
316
let mut count = criterion:: black_box ( 0 ) ;
345
- let mut buf = Vec :: new ( ) ;
346
317
loop {
347
- match r. read_event_into ( & mut buf ) {
318
+ match r. read_event ( ) {
348
319
Ok ( Event :: Empty ( e) ) if e. name ( ) == QName ( b"player" ) => {
349
320
for name in [ "num" , "status" , "avg" ] {
350
321
if let Some ( _attr) = e. try_get_attribute ( name) . unwrap ( ) {
@@ -359,7 +330,6 @@ fn attributes(c: &mut Criterion) {
359
330
Ok ( Event :: Eof ) => break ,
360
331
_ => ( ) ,
361
332
}
362
- buf. clear ( ) ;
363
333
}
364
334
assert_eq ! ( count, 150 ) ;
365
335
} )
0 commit comments