Commit 33e5da48 authored by Matthew Dempsky's avatar Matthew Dempsky

internal/poll: avoid unnecessary memory allocation in Writev

Writev was allocating a new []syscall.Iovec every call, rather than
reusing the cached copy available at *fd.iovec.

Fixes #26663.

Change-Id: I5967b0d82dc671ce0eaf4ec36cc2a0e46eadde02
Reviewed-on: https://go-review.googlesource.com/c/go/+/172419
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
parent d7df9de5
......@@ -51,7 +51,10 @@ func (fd *FD) Writev(v *[][]byte) (int64, error) {
if len(iovecs) == 0 {
break
}
fd.iovecs = &iovecs // cache
if fd.iovecs == nil {
fd.iovecs = new([]syscall.Iovec)
}
*fd.iovecs = iovecs // cache
var wrote uintptr
wrote, err = writev(fd.Sysfd, iovecs)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment