From 99f4d3c5a1b39a691f666a50db469b711b279b12 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 1 May 2015 13:41:02 +0300 Subject: [PATCH] Performance increase by relieving GC Signed-off-by: Sergey Matveev --- cmd/govpn-client/main.go | 4 ++-- cmd/govpn-server/main.go | 4 ++-- transport.go | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/govpn-client/main.go b/cmd/govpn-client/main.go index b5f86f9..c4b4fe4 100644 --- a/cmd/govpn-client/main.go +++ b/cmd/govpn-client/main.go @@ -82,7 +82,7 @@ func main() { firstUpCall := true var peer *govpn.Peer var ethPkt []byte - var udpPkt *govpn.UDPPkt + var udpPkt govpn.UDPPkt var udpPktData []byte knownPeers := govpn.KnownPeers(map[string]**govpn.Peer{remote.String(): &peer}) @@ -126,7 +126,7 @@ MainCycle: if timeouts >= timeout { break MainCycle } - if udpPkt == nil { + if udpPkt.Addr == nil { udpReady <- struct{}{} continue } diff --git a/cmd/govpn-server/main.go b/cmd/govpn-server/main.go index 2761d34..cfcc45f 100644 --- a/cmd/govpn-server/main.go +++ b/cmd/govpn-server/main.go @@ -113,7 +113,7 @@ func main() { peerReadySink := make(chan PeerReadyEvent) knownPeers := govpn.KnownPeers(make(map[string]**govpn.Peer)) var peerReady PeerReadyEvent - var udpPkt *govpn.UDPPkt + var udpPkt govpn.UDPPkt var udpPktData []byte var ethEvent EthEvent var peerId *govpn.PeerId @@ -196,7 +196,7 @@ MainCycle: } ethEvent.peer.EthProcess(ethEvent.data, conn, ethEvent.ready) case udpPkt = <-udpSink: - if udpPkt == nil { + if udpPkt.Addr == nil { udpReady <- struct{}{} continue } diff --git a/transport.go b/transport.go index 3c284f2..f337302 100644 --- a/transport.go +++ b/transport.go @@ -166,9 +166,9 @@ func TAPListen(ifaceName string) (*TAP, chan []byte, chan struct{}, chan struct{ // all UDP packet data will be saved, channel where information about // remote address and number of written bytes are stored, and a channel // used to tell that buffer is ready to be overwritten. -func ConnListen(conn *net.UDPConn) (chan *UDPPkt, []byte, chan struct{}) { +func ConnListen(conn *net.UDPConn) (chan UDPPkt, []byte, chan struct{}) { buf := make([]byte, MTU) - sink := make(chan *UDPPkt) + sink := make(chan UDPPkt) sinkReady := make(chan struct{}) go func(conn *net.UDPConn) { var n int @@ -180,10 +180,10 @@ func ConnListen(conn *net.UDPConn) (chan *UDPPkt, []byte, chan struct{}) { n, addr, err = conn.ReadFromUDP(buf) if err != nil { // This is needed for ticking the timeouts counter outside - sink <- nil + sink <- UDPPkt{nil, 0} continue } - sink <- &UDPPkt{addr, n} + sink <- UDPPkt{addr, n} } }(conn) sinkReady <- struct{}{} -- 2.48.1