From 067315c647a8c973147bb53fb7a3483e99aa863e Mon Sep 17 00:00:00 2001 From: Dave Cheney Date: Fri, 26 Oct 2012 19:41:21 +1100 Subject: [PATCH] net: avoid allocation in setAddr setAddr was showing up in profiles due to string concatenation construction the os.File name field. netFD.sysfile's Name() is never used, except in dup() so I believe it is safe to avoid this allocation. R=mikioh.mikioh, rsc CC=golang-dev https://golang.org/cl/6742058 --- src/pkg/net/fd_unix.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/pkg/net/fd_unix.go b/src/pkg/net/fd_unix.go index e231c3e212..72317426aa 100644 --- a/src/pkg/net/fd_unix.go +++ b/src/pkg/net/fd_unix.go @@ -312,14 +312,18 @@ func newFD(fd, family, sotype int, net string) (*netFD, error) { func (fd *netFD) setAddr(laddr, raddr Addr) { fd.laddr = laddr fd.raddr = raddr + fd.sysfile = os.NewFile(uintptr(fd.sysfd), fd.net) +} + +func (fd *netFD) name() string { var ls, rs string - if laddr != nil { - ls = laddr.String() + if fd.laddr != nil { + ls = fd.laddr.String() } - if raddr != nil { - rs = raddr.String() + if fd.raddr != nil { + rs = fd.raddr.String() } - fd.sysfile = os.NewFile(uintptr(fd.sysfd), fd.net+":"+ls+"->"+rs) + return fd.net + ":" + ls + "->" + rs } func (fd *netFD) connect(ra syscall.Sockaddr) error { @@ -660,7 +664,7 @@ func (fd *netFD) dup() (f *os.File, err error) { return nil, &OpError{"setnonblock", fd.net, fd.laddr, err} } - return os.NewFile(uintptr(ns), fd.sysfile.Name()), nil + return os.NewFile(uintptr(ns), fd.name()), nil } func closesocket(s int) error { -- 2.48.1