aboutsummaryrefslogtreecommitdiff
path: root/benches/bytes.rs
diff options
context:
space:
mode:
Diffstat (limited to 'benches/bytes.rs')
-rw-r--r--benches/bytes.rs118
1 files changed, 118 insertions, 0 deletions
diff --git a/benches/bytes.rs b/benches/bytes.rs
new file mode 100644
index 0000000..9c36e60
--- /dev/null
+++ b/benches/bytes.rs
@@ -0,0 +1,118 @@
+#![feature(test)]
+#![deny(warnings, rust_2018_idioms)]
+
+extern crate test;
+
+use test::Bencher;
+use bytes::Bytes;
+
+#[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);
+ }
+ })
+}