#![feature(test)] extern crate test; #[macro_use] extern crate sval_derive_macros; #[cfg(feature = "alloc")] #[derive(Value)] struct OwnedData { id: i32, title: String, attributes: Vec, } #[cfg(feature = "alloc")] fn owned_data() -> OwnedData { OwnedData { id: 42, title: "A very important document".to_owned(), attributes: vec!["#1".to_owned(), "#2".to_owned(), "#3".to_owned()], } } #[cfg(feature = "alloc")] #[derive(Value)] struct BorrowedData<'a> { id: i32, title: &'a str, attributes: &'a [&'a str], } #[cfg(feature = "alloc")] fn borrowed_data() -> BorrowedData<'static> { BorrowedData { id: 42, title: "A very important document", attributes: &["#1", "#2", "#3"], } } #[cfg(feature = "alloc")] #[bench] fn borrowed(b: &mut test::Bencher) { b.iter(|| borrowed_data()) } #[cfg(feature = "alloc")] #[bench] fn borrowed_collect_ref(b: &mut test::Bencher) { b.iter(|| { let data = borrowed_data(); test::black_box(sval_buffer::ValueBuf::collect(&data).unwrap()); }) } #[cfg(feature = "alloc")] #[bench] fn borrowed_collect(b: &mut test::Bencher) { b.iter(|| { let data = borrowed_data(); test::black_box(sval_buffer::ValueBuf::collect_owned(data).unwrap()); }) } #[cfg(feature = "alloc")] #[bench] fn borrowed_collect_ref_to_owned(b: &mut test::Bencher) { b.iter(|| { let data = borrowed_data(); sval_buffer::ValueBuf::collect(&data) .unwrap() .into_owned() .unwrap() }) } #[cfg(feature = "alloc")] #[bench] fn borrowed_collect_to_owned(b: &mut test::Bencher) { b.iter(|| { let data = borrowed_data(); sval_buffer::ValueBuf::collect_owned(&data) .unwrap() .into_owned() .unwrap() }) } #[cfg(feature = "alloc")] #[bench] fn owned(b: &mut test::Bencher) { b.iter(|| owned_data()) } #[cfg(feature = "alloc")] #[bench] fn owned_collect_ref(b: &mut test::Bencher) { b.iter(|| { let data = owned_data(); test::black_box(sval_buffer::ValueBuf::collect(&data).unwrap()); }) } #[cfg(feature = "alloc")] #[bench] fn owned_collect(b: &mut test::Bencher) { b.iter(|| { let data = owned_data(); test::black_box(sval_buffer::ValueBuf::collect_owned(data).unwrap()); }) } #[cfg(feature = "alloc")] #[bench] fn owned_collect_ref_to_owned(b: &mut test::Bencher) { b.iter(|| { let data = owned_data(); sval_buffer::ValueBuf::collect(&data) .unwrap() .into_owned() .unwrap() }) } #[cfg(feature = "alloc")] #[bench] fn owned_collect_to_owned(b: &mut test::Bencher) { b.iter(|| { let data = owned_data(); sval_buffer::ValueBuf::collect_owned(&data) .unwrap() .into_owned() .unwrap() }) }