Tokio's AsyncWrite trait once again has support for vectored writes in
Tokio 0.3.4 (see tokio-rs/tokio#3149.
This branch re-enables vectored writes in h2.
This change doesn't make all that big of a performance improvement in
Hyper's HTTP/2 benchmarks, but they use a BytesMut as the buffer.
With a buffer that turns into more IO vectors in bytes_vectored, there
might be a more noticeable performance improvement.
I spent a bit trying to refactor the flush logic to coalesce into fewer
writev calls with more buffers, but the current implementation seems
like about the best we're going to get without a bigger refactor. It's
basically the same as what h2 did previously, so it's probably fine.
Tokio's
AsyncWrite
trait once again has support for vectored writes in Tokio 0.3.4 (see tokio-rs/tokio#3149.This branch re-enables vectored writes in
h2
.This change doesn't make all that big of a performance improvement in Hyper's HTTP/2 benchmarks, but they use a
BytesMut
as the buffer. With a buffer that turns into more IO vectors inbytes_vectored
, there might be a more noticeable performance improvement.I spent a bit trying to refactor the flush logic to coalesce into fewer writev calls with more buffers, but the current implementation seems like about the best we're going to get without a bigger refactor. It's basically the same as what
h2
did previously, so it's probably fine.