mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-01-09 06:22:49 +00:00
120 lines
2.4 KiB
Rust
120 lines
2.4 KiB
Rust
#![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(|| {
|
|
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);
|
|
}
|
|
})
|
|
}
|