diff options
author | 2019-10-23 13:40:04 -0700 | |
---|---|---|
committer | 2019-10-23 13:40:04 -0700 | |
commit | fe2183dc2fa126e81c8af23f7096a1fcb05d6d1a (patch) | |
tree | 378a88e9f311eb87a9c2d1c3109ec6196cc423d8 | |
parent | 491ebbf79a61f78b699e082d2793e79bb17f3f2e (diff) | |
download | bytes-fe2183dc2fa126e81c8af23f7096a1fcb05d6d1a.tar.gz bytes-fe2183dc2fa126e81c8af23f7096a1fcb05d6d1a.tar.zst bytes-fe2183dc2fa126e81c8af23f7096a1fcb05d6d1a.zip |
Add benchmarks for BytesMut vs Vec (#303)
-rw-r--r-- | benches/bytes_mut.rs | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/benches/bytes_mut.rs b/benches/bytes_mut.rs index b8707bb..8e49f9c 100644 --- a/benches/bytes_mut.rs +++ b/benches/bytes_mut.rs @@ -140,3 +140,95 @@ fn fmt_write(b: &mut Bencher) { unsafe { buf.set_len(0); } }) } + +// BufMut for BytesMut vs Vec<u8> + +#[bench] +fn put_bytes_mut(b: &mut Bencher) { + let mut buf = BytesMut::with_capacity(256); + let data = [33u8; 32]; + + b.bytes = data.len() as u64 * 4; + b.iter(|| { + for _ in 0..4 { + buf.put_slice(&data); + } + test::black_box(&buf); + unsafe { buf.set_len(0); } + }); +} + +#[bench] +fn put_u8_bytes_mut(b: &mut Bencher) { + let mut buf = BytesMut::with_capacity(256); + let cnt = 128; + + b.bytes = cnt as u64; + b.iter(|| { + for _ in 0..cnt { + buf.put_u8(b'x'); + } + test::black_box(&buf); + unsafe { buf.set_len(0); } + }); +} + +#[bench] +fn put_vec(b: &mut Bencher) { + let mut buf = Vec::<u8>::with_capacity(256); + let data = [33u8; 32]; + + b.bytes = data.len() as u64 * 4; + b.iter(|| { + for _ in 0..4 { + buf.put_slice(&data); + } + test::black_box(&buf); + unsafe { buf.set_len(0); } + }); +} + +#[bench] +fn put_u8_vec(b: &mut Bencher) { + let mut buf = Vec::<u8>::with_capacity(256); + let cnt = 128; + + b.bytes = cnt as u64; + b.iter(|| { + for _ in 0..cnt { + buf.put_u8(b'x'); + } + test::black_box(&buf); + unsafe { buf.set_len(0); } + }); +} + +#[bench] +fn put_vec_extend(b: &mut Bencher) { + let mut buf = Vec::<u8>::with_capacity(256); + let data = [33u8; 32]; + + b.bytes = data.len() as u64 * 4; + b.iter(|| { + for _ in 0..4 { + buf.extend_from_slice(&data); + } + test::black_box(&buf); + unsafe { buf.set_len(0); } + }); +} + +#[bench] +fn put_u8_vec_push(b: &mut Bencher) { + let mut buf = Vec::<u8>::with_capacity(256); + let cnt = 128; + + b.bytes = cnt as u64; + b.iter(|| { + for _ in 0..cnt { + buf.push(b'x'); + } + test::black_box(&buf); + unsafe { buf.set_len(0); } + }); +} |