123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #![feature(test)]
- #![warn(rust_2018_idioms)]
- extern crate test;
- use bytes::Bytes;
- use test::Bencher;
- #[bench]
- fn deref_unique(b: &mut Bencher) {
- let buf = Bytes::from(vec![0; 1024]);
- b.iter(|| {
- for _ in 0..1024 {
- test::black_box(&buf[..]);
- }
- })
- }
- #[bench]
- fn deref_shared(b: &mut Bencher) {
- let buf = Bytes::from(vec![0; 1024]);
- let _b2 = buf.clone();
- b.iter(|| {
- for _ in 0..1024 {
- test::black_box(&buf[..]);
- }
- })
- }
- #[bench]
- fn deref_static(b: &mut Bencher) {
- let buf = Bytes::from_static(b"hello world");
- b.iter(|| {
- for _ in 0..1024 {
- test::black_box(&buf[..]);
- }
- })
- }
- #[bench]
- fn clone_static(b: &mut Bencher) {
- let bytes =
- Bytes::from_static("hello world 1234567890 and have a good byte 0987654321".as_bytes());
- b.iter(|| {
- for _ in 0..1024 {
- test::black_box(&bytes.clone());
- }
- })
- }
- #[bench]
- fn clone_shared(b: &mut Bencher) {
- let bytes = Bytes::from(b"hello world 1234567890 and have a good byte 0987654321".to_vec());
- b.iter(|| {
- for _ in 0..1024 {
- test::black_box(&bytes.clone());
- }
- })
- }
- #[bench]
- fn clone_arc_vec(b: &mut Bencher) {
- use std::sync::Arc;
- let bytes = Arc::new(b"hello world 1234567890 and have a good byte 0987654321".to_vec());
- b.iter(|| {
- for _ in 0..1024 {
- test::black_box(&bytes.clone());
- }
- })
- }
- #[bench]
- fn from_long_slice(b: &mut Bencher) {
- let data = [0u8; 128];
- b.bytes = data.len() as u64;
- b.iter(|| {
- let buf = Bytes::copy_from_slice(&data[..]);
- test::black_box(buf);
- })
- }
- #[bench]
- fn slice_empty(b: &mut Bencher) {
- b.iter(|| {
- // `clone` is to convert to ARC
- let b = Bytes::from(vec![17; 1024]).clone();
- for i in 0..1000 {
- test::black_box(b.slice(i % 100..i % 100));
- }
- })
- }
- #[bench]
- fn slice_short_from_arc(b: &mut Bencher) {
- b.iter(|| {
- // `clone` is to convert to ARC
- let b = Bytes::from(vec![17; 1024]).clone();
- for i in 0..1000 {
- test::black_box(b.slice(1..2 + i % 10));
- }
- })
- }
- #[bench]
- fn split_off_and_drop(b: &mut Bencher) {
- b.iter(|| {
- for _ in 0..1024 {
- let v = vec![10; 200];
- let mut b = Bytes::from(v);
- test::black_box(b.split_off(100));
- test::black_box(b);
- }
- })
- }
|