perf(chunk): use faster length check in Chunk::remaining
This commit is contained in:
@@ -34,7 +34,10 @@ impl Chunk {
|
|||||||
impl Buf for Chunk {
|
impl Buf for Chunk {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn remaining(&self) -> usize {
|
fn remaining(&self) -> usize {
|
||||||
self.bytes.len()
|
//perf: Bytes::len() isn't inline yet,
|
||||||
|
//so it's slightly slower than checking
|
||||||
|
//the length of the slice.
|
||||||
|
self.bytes().len()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
@@ -157,3 +160,29 @@ impl Iterator for IntoIter {
|
|||||||
|
|
||||||
impl ExactSizeIterator for IntoIter {}
|
impl ExactSizeIterator for IntoIter {}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[cfg(feature = "nightly")]
|
||||||
|
use test::Bencher;
|
||||||
|
|
||||||
|
#[cfg(feature = "nightly")]
|
||||||
|
#[bench]
|
||||||
|
fn bench_chunk_static_buf(b: &mut Bencher) {
|
||||||
|
use bytes::BufMut;
|
||||||
|
|
||||||
|
let s = "Hello, World!";
|
||||||
|
b.bytes = s.len() as u64;
|
||||||
|
|
||||||
|
let mut dst = Vec::with_capacity(128);
|
||||||
|
|
||||||
|
b.iter(|| {
|
||||||
|
let chunk = Chunk::from(s);
|
||||||
|
dst.put(chunk);
|
||||||
|
::test::black_box(&dst);
|
||||||
|
unsafe { dst.set_len(0); }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user