#![feature(test)] extern crate test; use bytes::Bytes; use http::HeaderValue; use test::Bencher; static SHORT: &'static [u8] = b"localhost"; static LONG: &'static [u8] = b"Mozilla/5.0 (X11; CrOS x86_64 9592.71.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.80 Safari/537.36"; #[bench] fn from_shared_short(b: &mut Bencher) { b.bytes = SHORT.len() as u64; let bytes = Bytes::from_static(SHORT); b.iter(|| { HeaderValue::from_maybe_shared(bytes.clone()).unwrap(); }); } #[bench] fn from_shared_long(b: &mut Bencher) { b.bytes = LONG.len() as u64; let bytes = Bytes::from_static(LONG); b.iter(|| { HeaderValue::from_maybe_shared(bytes.clone()).unwrap(); }); } #[bench] fn from_shared_unchecked_short(b: &mut Bencher) { b.bytes = SHORT.len() as u64; let bytes = Bytes::from_static(SHORT); b.iter(|| unsafe { HeaderValue::from_maybe_shared_unchecked(bytes.clone()); }); } #[bench] fn from_shared_unchecked_long(b: &mut Bencher) { b.bytes = LONG.len() as u64; let bytes = Bytes::from_static(LONG); b.iter(|| unsafe { HeaderValue::from_maybe_shared_unchecked(bytes.clone()); }); }