Skip to content

Commit a4b0f53

Browse files
authored
Merge pull request #691 from Mingun/compare-benches
Update maybe_xml in `compare` project to the latest version and add quick-xml borrowed to compare table
2 parents 222532c + 82cc0da commit a4b0f53

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

compare/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ edition = "2021"
99

1010
[dev-dependencies]
1111
criterion = { version = "0.5", features = ["html_reports"] }
12-
maybe_xml = "0.6"
12+
maybe_xml = "0.10.1"
1313
quick-xml = { path = "..", features = ["serialize"] }
1414
rapid-xml = "0.2"
1515
rusty_xml = { version = "0.3", package = "RustyXML" }

compare/benches/bench.rs

+31-9
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,36 @@ fn low_level_comparison(c: &mut Criterion) {
5454

5555
group.throughput(Throughput::Bytes(data.len() as u64));
5656
group.bench_with_input(
57-
BenchmarkId::new("quick_xml", filename),
57+
BenchmarkId::new("quick_xml:borrowed", filename),
5858
*data,
5959
|b, input| {
6060
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;
6383
let mut count = criterion::black_box(0);
6484
let mut buf = Vec::new();
6585
loop {
66-
match r.read_event_into(&mut buf) {
86+
match reader.read_event_into(&mut buf) {
6787
Ok(Event::Start(_)) | Ok(Event::Empty(_)) => count += 1,
6888
Ok(Event::Eof) => break,
6989
_ => (),
@@ -79,14 +99,14 @@ fn low_level_comparison(c: &mut Criterion) {
7999
BenchmarkId::new("maybe_xml", filename),
80100
*data,
81101
|b, input| {
82-
use maybe_xml::Lexer;
83102
use maybe_xml::token::Ty;
103+
use maybe_xml::Reader;
84104

85105
b.iter(|| {
86-
let lexer = Lexer::from_slice(input.as_bytes());
106+
let reader = Reader::from_str(input);
87107

88108
let mut count = criterion::black_box(0);
89-
for token in lexer.into_iter() {
109+
for token in reader.into_iter() {
90110
match token.ty() {
91111
Ty::StartTag(_) | Ty::EmptyElementTag(_) => count += 1,
92112
_ => (),
@@ -272,7 +292,8 @@ fn serde_comparison(c: &mut Criterion) {
272292
}
273293

274294
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());
276297
assert_eq!(rss.channel.items.len(), 99);
277298
})
278299
},
@@ -307,7 +328,8 @@ fn serde_comparison(c: &mut Criterion) {
307328
}
308329

309330
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());
311333
assert_eq!(rss.channel.items.len(), 99);
312334
})
313335
},

0 commit comments

Comments
 (0)