@@ -2,8 +2,6 @@ use criterion::{self, criterion_group, criterion_main, BenchmarkId, Criterion, T
2
2
use pretty_assertions:: assert_eq;
3
3
use quick_xml:: events:: Event ;
4
4
use quick_xml:: reader:: Reader ;
5
- use serde:: Deserialize ;
6
- use serde_xml_rs;
7
5
use std:: hint:: black_box;
8
6
use xml:: reader:: { EventReader , XmlEvent } ;
9
7
@@ -283,83 +281,5 @@ fn low_level_comparison(c: &mut Criterion) {
283
281
group. finish ( ) ;
284
282
}
285
283
286
- /// Runs benchmarks for several XML libraries using serde deserialization
287
- #[ allow( dead_code) ] // We do not use structs
288
- fn serde_comparison ( c : & mut Criterion ) {
289
- let mut group = c. benchmark_group ( "serde" ) ;
290
-
291
- #[ derive( Debug , Deserialize ) ]
292
- struct Rss < E > {
293
- channel : Channel < E > ,
294
- }
295
-
296
- #[ derive( Debug , Deserialize ) ]
297
- struct Channel < E > {
298
- title : String ,
299
- #[ serde( rename = "item" , default = "Vec::new" ) ]
300
- items : Vec < Item < E > > ,
301
- }
302
-
303
- #[ derive( Debug , Deserialize ) ]
304
- struct Item < E > {
305
- title : String ,
306
- link : String ,
307
- #[ serde( rename = "pubDate" ) ]
308
- pub_date : String ,
309
- enclosure : Option < E > ,
310
- }
311
-
312
- #[ derive( Debug , Deserialize ) ]
313
- struct Enclosure {
314
- #[ serde( rename = "@url" ) ]
315
- url : String ,
316
-
317
- #[ serde( rename = "@length" ) ]
318
- length : String ,
319
-
320
- #[ serde( rename = "@type" ) ]
321
- typ : String ,
322
- }
323
-
324
- group. throughput ( Throughput :: Bytes ( SAMPLE_RSS . len ( ) as u64 ) ) ;
325
-
326
- group. bench_with_input (
327
- BenchmarkId :: new ( "quick_xml" , "sample_rss.xml" ) ,
328
- SAMPLE_RSS ,
329
- |b, input| {
330
- b. iter ( || {
331
- let rss: Rss < Enclosure > = black_box ( quick_xml:: de:: from_str ( input) . unwrap ( ) ) ;
332
- assert_eq ! ( rss. channel. items. len( ) , 99 ) ;
333
- } )
334
- } ,
335
- ) ;
336
-
337
- /* NOTE: Most parts of deserializer are not implemented yet, so benchmark failed
338
- group.bench_with_input(BenchmarkId::new("rapid-xml", "sample_rss.xml"), SAMPLE_RSS, |b, input| {
339
- use rapid_xml::de::Deserializer;
340
- use rapid_xml::parser::Parser;
341
-
342
- b.iter(|| {
343
- let mut r = Parser::new(input.as_bytes());
344
- let mut de = Deserializer::new(&mut r).unwrap();
345
- let rss = black_box(Rss::deserialize(&mut de).unwrap());
346
- assert_eq!(rss.channel.items.len(), 99);
347
- });
348
- });*/
349
-
350
- group. bench_with_input (
351
- BenchmarkId :: new ( "xml_rs" , "sample_rss.xml" ) ,
352
- SAMPLE_RSS ,
353
- |b, input| {
354
- b. iter ( || {
355
- let rss: Rss < Enclosure > = black_box ( serde_xml_rs:: from_str ( input) . unwrap ( ) ) ;
356
- assert_eq ! ( rss. channel. items. len( ) , 99 ) ;
357
- } )
358
- } ,
359
- ) ;
360
-
361
- group. finish ( ) ;
362
- }
363
-
364
- criterion_group ! ( benches, low_level_comparison, serde_comparison) ;
284
+ criterion_group ! ( benches, low_level_comparison) ;
365
285
criterion_main ! ( benches) ;
0 commit comments