From 41eb7293d26c47c19ffaa32b07f9b9ea21ff0a09 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Sun, 25 May 2014 22:20:06 -0700 Subject: [PATCH] flesh out struct benchmarks --- bench_struct.rs | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ serde.rs | 8 ++--- 2 files changed, 82 insertions(+), 4 deletions(-) diff --git a/bench_struct.rs b/bench_struct.rs index 8866f26f..781119b8 100644 --- a/bench_struct.rs +++ b/bench_struct.rs @@ -438,6 +438,40 @@ mod deserializer { } } +#[bench] +fn bench_struct_decoder_outer_empty(b: &mut Bencher) { + b.iter(|| { + let mut map = HashMap::new(); + map.insert("abc".to_strbuf(), Some('c')); + + let outer = Outer { + inner: vec!(), + }; + + let mut d = decoder::OuterDecoder::new(outer.clone()); + let value: Outer = Decodable::decode(&mut d).unwrap(); + + assert_eq!(value, outer); + }) +} + +#[bench] +fn bench_struct_deserializer_outer_empty(b: &mut Bencher) { + b.iter(|| { + let mut map = HashMap::new(); + map.insert("abc".to_strbuf(), Some('c')); + + let outer = Outer { + inner: vec!(), + }; + + let mut d = deserializer::OuterDeserializer::new(outer.clone()); + let value: Outer = Deserializable::deserialize(&mut d).unwrap(); + + assert_eq!(value, outer); + }) +} + #[bench] fn bench_struct_decoder(b: &mut Bencher) { b.iter(|| { @@ -483,3 +517,47 @@ fn bench_struct_deserializer(b: &mut Bencher) { assert_eq!(value, outer); }) } + +#[bench] +fn bench_struct_decoder_inner_empty(b: &mut Bencher) { + b.iter(|| { + let mut map = HashMap::new(); + + let outer = Outer { + inner: vec!( + Inner { + a: (), + b: 5, + c: map, + }, + ) + }; + + let mut d = decoder::OuterDecoder::new(outer.clone()); + let value: Outer = Decodable::decode(&mut d).unwrap(); + + assert_eq!(value, outer); + }) +} + +#[bench] +fn bench_struct_deserializerinner_empty(b: &mut Bencher) { + b.iter(|| { + let mut map = HashMap::new(); + + let outer = Outer { + inner: vec!( + Inner { + a: (), + b: 5, + c: map, + }, + ) + }; + + let mut d = deserializer::OuterDeserializer::new(outer.clone()); + let value: Outer = Deserializable::deserialize(&mut d).unwrap(); + + assert_eq!(value, outer); + }) +} diff --git a/serde.rs b/serde.rs index 6ba1efdf..e7783317 100644 --- a/serde.rs +++ b/serde.rs @@ -17,11 +17,11 @@ pub mod de; //#[cfg(test)] //pub mod bench_bytes; -#[cfg(test)] -pub mod bench_enum; +//#[cfg(test)] +//pub mod bench_enum; #[cfg(test)] pub mod bench_struct; -#[cfg(test)] -pub mod bench_vec; +//#[cfg(test)] +//pub mod bench_vec;