diff --git a/actix-codec/CHANGES.md b/actix-codec/CHANGES.md index fa471c01..4c318464 100644 --- a/actix-codec/CHANGES.md +++ b/actix-codec/CHANGES.md @@ -3,6 +3,7 @@ ## Unreleased - 2020-xx-xx * Use `.advance()` instead of `.split_to()`. * Upgrade `tokio-util` to `0.3`. +* Improve `BytesCodec` `.encode()` performance ## [0.2.0] - 2019-12-10 diff --git a/actix-codec/src/bcodec.rs b/actix-codec/src/bcodec.rs index 4d92ee69..6faceadd 100644 --- a/actix-codec/src/bcodec.rs +++ b/actix-codec/src/bcodec.rs @@ -1,4 +1,4 @@ -use bytes::{BufMut, Bytes, BytesMut}; +use bytes::{Bytes, BytesMut, Buf}; use std::io; use super::{Decoder, Encoder}; @@ -12,9 +12,9 @@ pub struct BytesCodec; impl Encoder for BytesCodec { type Error = io::Error; + #[inline] fn encode(&mut self, item: Bytes, dst: &mut BytesMut) -> Result<(), Self::Error> { - dst.reserve(item.len()); - dst.put(item); + dst.extend_from_slice(item.bytes()); Ok(()) } }