Skip to content

Commit 8a74258

Browse files
committed
Break up benchmarks into sub-groups
1 parent d96c5c9 commit 8a74258

File tree

1 file changed

+51
-28
lines changed

1 file changed

+51
-28
lines changed

benches/bench.rs

Lines changed: 51 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@ use criterion::{self, criterion_group, criterion_main, Criterion};
22
use quick_xml::events::Event;
33
use quick_xml::Reader;
44

5-
fn quick_xml_benchmark(c: &mut Criterion) {
6-
let mut group = c.benchmark_group("metadata_parse");
5+
static SAMPLE: &[u8] = include_bytes!("../tests/sample_rss.xml");
6+
static PLAYERS: &[u8] = include_bytes!("../tests/players.xml");
77

8-
let sample: &[u8] = include_bytes!("../tests/sample_rss.xml");
9-
let players: &[u8] = include_bytes!("../tests/players.xml");
10-
11-
group.bench_function("quick_xml_normal", |b| {
8+
fn quick_xml_normal(c: &mut Criterion) {
9+
let mut group = c.benchmark_group("quick_xml_normal");
10+
group.bench_function("untrimmed", |b| {
1211
b.iter(|| {
13-
let mut r = Reader::from_reader(sample);
12+
let mut r = Reader::from_reader(SAMPLE);
1413
r.check_end_names(false).check_comments(false);
1514
let mut count = criterion::black_box(0);
1615
let mut buf = Vec::new();
@@ -26,9 +25,9 @@ fn quick_xml_benchmark(c: &mut Criterion) {
2625
})
2726
});
2827

29-
group.bench_function("quick_xml_normal_trimmed", |b| {
28+
group.bench_function("trimmed", |b| {
3029
b.iter(|| {
31-
let mut r = Reader::from_reader(sample);
30+
let mut r = Reader::from_reader(SAMPLE);
3231
r.check_end_names(false)
3332
.check_comments(false)
3433
.trim_text(true);
@@ -45,10 +44,14 @@ fn quick_xml_benchmark(c: &mut Criterion) {
4544
assert_eq!(count, 1550);
4645
});
4746
});
47+
group.finish();
48+
}
4849

49-
group.bench_function("quick_xml_namespaced", |b| {
50+
fn quick_xml_namespaced(c: &mut Criterion) {
51+
let mut group = c.benchmark_group("quick_xml_namespaced");
52+
group.bench_function("untrimmed", |b| {
5053
b.iter(|| {
51-
let mut r = Reader::from_reader(sample);
54+
let mut r = Reader::from_reader(SAMPLE);
5255
r.check_end_names(false).check_comments(false);
5356
let mut count = criterion::black_box(0);
5457
let mut buf = Vec::new();
@@ -65,9 +68,9 @@ fn quick_xml_benchmark(c: &mut Criterion) {
6568
});
6669
});
6770

68-
group.bench_function("quick_xml_namespaced_trimmed", |b| {
71+
group.bench_function("trimmed", |b| {
6972
b.iter(|| {
70-
let mut r = Reader::from_reader(sample);
73+
let mut r = Reader::from_reader(SAMPLE);
7174
r.check_end_names(false)
7275
.check_comments(false)
7376
.trim_text(true);
@@ -85,11 +88,15 @@ fn quick_xml_benchmark(c: &mut Criterion) {
8588
assert_eq!(count, 1550);
8689
});
8790
});
91+
group.finish();
92+
}
8893

89-
group.bench_function("quick_xml_escaped", |b| {
94+
fn quick_xml_escaped(c: &mut Criterion) {
95+
let mut group = c.benchmark_group("quick_xml_escaped");
96+
group.bench_function("untrimmed", |b| {
9097
b.iter(|| {
9198
let mut buf = Vec::new();
92-
let mut r = Reader::from_reader(sample);
99+
let mut r = Reader::from_reader(SAMPLE);
93100
r.check_end_names(false).check_comments(false);
94101
let mut count = criterion::black_box(0);
95102
let mut nbtxt = criterion::black_box(0);
@@ -113,10 +120,10 @@ fn quick_xml_benchmark(c: &mut Criterion) {
113120
});
114121
});
115122

116-
group.bench_function("quick_xml_escaped_trimmed", |b| {
123+
group.bench_function("trimmed", |b| {
117124
b.iter(|| {
118125
let mut buf = Vec::new();
119-
let mut r = Reader::from_reader(sample);
126+
let mut r = Reader::from_reader(SAMPLE);
120127
r.check_end_names(false)
121128
.check_comments(false)
122129
.trim_text(true);
@@ -141,8 +148,12 @@ fn quick_xml_benchmark(c: &mut Criterion) {
141148
assert_eq!(nbtxt, 50261);
142149
});
143150
});
151+
group.finish();
152+
}
144153

145-
group.bench_function("quick_xml_one_text_event", |b| {
154+
fn quick_xml_one_event(c: &mut Criterion) {
155+
let mut group = c.benchmark_group("quick_xml_one_event");
156+
group.bench_function("text_event", |b| {
146157
let src = "Hello world!".repeat(512 / 12).into_bytes();
147158
let mut buf = Vec::with_capacity(1024);
148159
b.iter(|| {
@@ -160,7 +171,7 @@ fn quick_xml_benchmark(c: &mut Criterion) {
160171
})
161172
});
162173

163-
group.bench_function("quick_xml_one_start_event_trimmed", |b| {
174+
group.bench_function("start_event_trimmed", |b| {
164175
let src = format!(r#"<hello target="{}">"#, "world".repeat(512 / 5)).into_bytes();
165176
let mut buf = Vec::with_capacity(1024);
166177
b.iter(|| {
@@ -180,7 +191,7 @@ fn quick_xml_benchmark(c: &mut Criterion) {
180191
})
181192
});
182193

183-
group.bench_function("quick_xml_one_comment_event_trimmed", |b| {
194+
group.bench_function("comment_event_trimmed", |b| {
184195
let src = format!(r#"<!-- hello "{}" -->"#, "world".repeat(512 / 5)).into_bytes();
185196
let mut buf = Vec::with_capacity(1024);
186197
b.iter(|| {
@@ -200,7 +211,7 @@ fn quick_xml_benchmark(c: &mut Criterion) {
200211
})
201212
});
202213

203-
group.bench_function("quick_xml_one_cdata_event_trimmed", |b| {
214+
group.bench_function("cdata_event_trimmed", |b| {
204215
let src = format!(r#"<![CDATA[hello "{}"]]>"#, "world".repeat(512 / 5)).into_bytes();
205216
let mut buf = Vec::with_capacity(1024);
206217
b.iter(|| {
@@ -219,10 +230,14 @@ fn quick_xml_benchmark(c: &mut Criterion) {
219230
assert_eq!(nbtxt, 518);
220231
})
221232
});
233+
group.finish();
234+
}
222235

223-
group.bench_function("quick_xml_iter_attributes", |b| {
236+
fn quick_xml_attributes(c: &mut Criterion) {
237+
let mut group = c.benchmark_group("quick_xml_attributes");
238+
group.bench_function("iter_attributes", |b| {
224239
b.iter(|| {
225-
let mut r = Reader::from_reader(players);
240+
let mut r = Reader::from_reader(PLAYERS);
226241
r.check_end_names(false).check_comments(false);
227242
let mut count = criterion::black_box(0);
228243
let mut buf = Vec::new();
@@ -243,9 +258,9 @@ fn quick_xml_benchmark(c: &mut Criterion) {
243258
})
244259
});
245260

246-
group.bench_function("quick_xml_iter_attributes_no_checks", |b| {
261+
group.bench_function("iter_attributes_no_checks", |b| {
247262
b.iter(|| {
248-
let mut r = Reader::from_reader(players);
263+
let mut r = Reader::from_reader(PLAYERS);
249264
r.check_end_names(false).check_comments(false);
250265
let mut count = criterion::black_box(0);
251266
let mut buf = Vec::new();
@@ -266,9 +281,9 @@ fn quick_xml_benchmark(c: &mut Criterion) {
266281
})
267282
});
268283

269-
group.bench_function("quick_xml_try_get_attribute", |b| {
284+
group.bench_function("try_get_attribute", |b| {
270285
b.iter(|| {
271-
let mut r = Reader::from_reader(players);
286+
let mut r = Reader::from_reader(PLAYERS);
272287
r.check_end_names(false).check_comments(false);
273288
let mut count = criterion::black_box(0);
274289
let mut buf = Vec::new();
@@ -293,7 +308,15 @@ fn quick_xml_benchmark(c: &mut Criterion) {
293308
assert_eq!(count, 150);
294309
})
295310
});
311+
group.finish();
296312
}
297313

298-
criterion_group!(benches, quick_xml_benchmark);
314+
criterion_group!(
315+
benches,
316+
quick_xml_normal,
317+
quick_xml_escaped,
318+
quick_xml_namespaced,
319+
quick_xml_one_event,
320+
quick_xml_attributes
321+
);
299322
criterion_main!(benches);

0 commit comments

Comments
 (0)