@@ -54,16 +54,36 @@ fn low_level_comparison(c: &mut Criterion) {
54
54
55
55
group. throughput ( Throughput :: Bytes ( data. len ( ) as u64 ) ) ;
56
56
group. bench_with_input (
57
- BenchmarkId :: new ( "quick_xml" , filename) ,
57
+ BenchmarkId :: new ( "quick_xml:borrowed " , filename) ,
58
58
* data,
59
59
|b, input| {
60
60
b. iter ( || {
61
- let mut r = Reader :: from_reader ( input. as_bytes ( ) ) ;
62
- r. config_mut ( ) . check_end_names = false ;
61
+ let mut reader = Reader :: from_str ( input) ;
62
+ reader. config_mut ( ) . check_end_names = false ;
63
+ let mut count = criterion:: black_box ( 0 ) ;
64
+ loop {
65
+ match reader. read_event ( ) {
66
+ Ok ( Event :: Start ( _) ) | Ok ( Event :: Empty ( _) ) => count += 1 ,
67
+ Ok ( Event :: Eof ) => break ,
68
+ _ => ( ) ,
69
+ }
70
+ }
71
+ assert_eq ! ( count, total_tags, "Overall tag count in {}" , filename) ;
72
+ } )
73
+ } ,
74
+ ) ;
75
+
76
+ group. bench_with_input (
77
+ BenchmarkId :: new ( "quick_xml:buffered" , filename) ,
78
+ * data,
79
+ |b, input| {
80
+ b. iter ( || {
81
+ let mut reader = Reader :: from_reader ( input. as_bytes ( ) ) ;
82
+ reader. config_mut ( ) . check_end_names = false ;
63
83
let mut count = criterion:: black_box ( 0 ) ;
64
84
let mut buf = Vec :: new ( ) ;
65
85
loop {
66
- match r . read_event_into ( & mut buf) {
86
+ match reader . read_event_into ( & mut buf) {
67
87
Ok ( Event :: Start ( _) ) | Ok ( Event :: Empty ( _) ) => count += 1 ,
68
88
Ok ( Event :: Eof ) => break ,
69
89
_ => ( ) ,
@@ -79,14 +99,14 @@ fn low_level_comparison(c: &mut Criterion) {
79
99
BenchmarkId :: new ( "maybe_xml" , filename) ,
80
100
* data,
81
101
|b, input| {
82
- use maybe_xml:: Lexer ;
83
102
use maybe_xml:: token:: Ty ;
103
+ use maybe_xml:: Reader ;
84
104
85
105
b. iter ( || {
86
- let lexer = Lexer :: from_slice ( input. as_bytes ( ) ) ;
106
+ let reader = Reader :: from_str ( input) ;
87
107
88
108
let mut count = criterion:: black_box ( 0 ) ;
89
- for token in lexer . into_iter ( ) {
109
+ for token in reader . into_iter ( ) {
90
110
match token. ty ( ) {
91
111
Ty :: StartTag ( _) | Ty :: EmptyElementTag ( _) => count += 1 ,
92
112
_ => ( ) ,
@@ -272,7 +292,8 @@ fn serde_comparison(c: &mut Criterion) {
272
292
}
273
293
274
294
b. iter ( || {
275
- let rss: Rss < Enclosure > = criterion:: black_box ( quick_xml:: de:: from_str ( input) . unwrap ( ) ) ;
295
+ let rss: Rss < Enclosure > =
296
+ criterion:: black_box ( quick_xml:: de:: from_str ( input) . unwrap ( ) ) ;
276
297
assert_eq ! ( rss. channel. items. len( ) , 99 ) ;
277
298
} )
278
299
} ,
@@ -307,7 +328,8 @@ fn serde_comparison(c: &mut Criterion) {
307
328
}
308
329
309
330
b. iter ( || {
310
- let rss: Rss < Enclosure > = criterion:: black_box ( serde_xml_rs:: from_str ( input) . unwrap ( ) ) ;
331
+ let rss: Rss < Enclosure > =
332
+ criterion:: black_box ( serde_xml_rs:: from_str ( input) . unwrap ( ) ) ;
311
333
assert_eq ! ( rss. channel. items. len( ) , 99 ) ;
312
334
} )
313
335
} ,
0 commit comments