@@ -2,8 +2,6 @@ use criterion::{self, criterion_group, criterion_main, BenchmarkId, Criterion, T
22use  pretty_assertions:: assert_eq; 
33use  quick_xml:: events:: Event ; 
44use  quick_xml:: reader:: Reader ; 
5- use  serde:: Deserialize ; 
6- use  serde_xml_rs; 
75use  std:: hint:: black_box; 
86use  xml:: reader:: { EventReader ,  XmlEvent } ; 
97
@@ -283,83 +281,5 @@ fn low_level_comparison(c: &mut Criterion) {
283281    group. finish ( ) ; 
284282} 
285283
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) ; 
365285criterion_main ! ( benches) ; 
0 commit comments