@@ -2,15 +2,14 @@ use criterion::{self, criterion_group, criterion_main, Criterion};
22use quick_xml:: events:: Event ;
33use 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+ ) ;
299322criterion_main ! ( benches) ;
0 commit comments