Files

120 lines
2.4 KiB
Rust
Raw Permalink Normal View History

2017-05-22 12:02:51 -07:00
#![feature(test)]
#![warn(rust_2018_idioms)]
2017-05-22 12:02:51 -07:00
extern crate test;
use bytes::Bytes;
2020-05-22 13:17:30 +09:00
use test::Bencher;
2017-05-22 12:02:51 -07:00
#[bench]
fn deref_unique(b: &mut Bencher) {
let buf = Bytes::from(vec![0; 1024]);
2017-05-22 12:02:51 -07:00
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();
2017-05-22 12:02:51 -07:00
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");
2017-05-22 12:02:51 -07:00
b.iter(|| {
for _ in 0..1024 {
test::black_box(&buf[..]);
}
})
}
2018-07-03 15:21:26 -07:00
#[bench]
fn clone_static(b: &mut Bencher) {
2020-05-22 13:17:30 +09:00
let bytes =
Bytes::from_static("hello world 1234567890 and have a good byte 0987654321".as_bytes());
2018-07-03 15:21:26 -07:00
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());
2018-07-03 15:21:26 -07:00
b.iter(|| {
for _ in 0..1024 {
test::black_box(&bytes.clone());
}
})
}
2017-05-22 12:02:51 -07:00
#[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());
2017-05-22 12:02:51 -07:00
b.iter(|| {
for _ in 0..1024 {
test::black_box(&bytes.clone());
2017-05-22 12:02:51 -07:00
}
})
}
#[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);
})
}
2017-05-22 23:15:08 +03:00
#[bench]
fn slice_empty(b: &mut Bencher) {
b.iter(|| {
let b = Bytes::from(vec![17; 1024]).clone();
for i in 0..1000 {
2019-07-26 05:01:22 +09:00
test::black_box(b.slice(i % 100..i % 100));
}
2017-05-22 23:15:08 +03:00
})
}
#[bench]
fn slice_short_from_arc(b: &mut Bencher) {
2017-05-22 23:15:08 +03:00
b.iter(|| {
// `clone` is to convert to ARC
let b = Bytes::from(vec![17; 1024]).clone();
for i in 0..1000 {
2019-07-26 05:01:22 +09:00
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);
2017-05-22 23:15:08 +03:00
}
})
}