]> Cypherpunks.ru repositories - nncp.git/commitdiff
Small buffer allocation optimization
authorSergey Matveev <stargrave@stargrave.org>
Fri, 9 Jul 2021 11:02:04 +0000 (14:02 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 9 Jul 2021 12:18:38 +0000 (15:18 +0300)
src/sp.go

index 1bb8f75d6e628b4b294f0b931dbdaf6d7af6b33c..269f6ba4a34101296670555a2078c1da0e47aa52 100644 (file)
--- a/src/sp.go
+++ b/src/sp.go
@@ -806,6 +806,7 @@ func (state *SPState) StartWorkers(
                defer conn.Close()
                defer state.SetDead()
                defer state.wg.Done()
+               buf := make([]byte, MaxSPSize-SPHeadOverhead-SPFileOverhead)
                for {
                        if state.NotAlive() {
                                return
@@ -895,7 +896,7 @@ func (state *SPState) StartWorkers(
                                }
                                fd := fdAndFullSize.fd
                                fullSize := fdAndFullSize.fullSize
-                               var buf []byte
+                               var bufRead []byte
                                if freq.Offset < uint64(fullSize) {
                                        state.Ctx.LogD("sp-file-seek", lesp, func(les LEs) string {
                                                return logMsg(les) + ": seeking"
@@ -906,7 +907,6 @@ func (state *SPState) StartWorkers(
                                                })
                                                return
                                        }
-                                       buf = make([]byte, MaxSPSize-SPHeadOverhead-SPFileOverhead)
                                        n, err := fd.Read(buf)
                                        if err != nil {
                                                state.Ctx.LogE("sp-file-read", lesp, err, func(les LEs) string {
@@ -914,7 +914,7 @@ func (state *SPState) StartWorkers(
                                                })
                                                return
                                        }
-                                       buf = buf[:n]
+                                       bufRead = buf[:n]
                                        lesp = append(
                                                les,
                                                LE{"XX", string(TTx)},
@@ -932,9 +932,9 @@ func (state *SPState) StartWorkers(
                                payload = MarshalSP(SPTypeFile, SPFile{
                                        Hash:    freq.Hash,
                                        Offset:  freq.Offset,
-                                       Payload: buf,
+                                       Payload: bufRead,
                                })
-                               ourSize := freq.Offset + uint64(len(buf))
+                               ourSize := freq.Offset + uint64(len(bufRead))
                                lesp = append(
                                        les,
                                        LE{"XX", string(TTx)},
@@ -947,7 +947,8 @@ func (state *SPState) StartWorkers(
                                        Progress("Tx", lesp)
                                }
                                state.Lock()
-                               if len(state.queueTheir) > 0 && *state.queueTheir[0].freq.Hash == *freq.Hash {
+                               if len(state.queueTheir) > 0 &&
+                                       *state.queueTheir[0].freq.Hash == *freq.Hash {
                                        if ourSize == uint64(fullSize) {
                                                state.Ctx.LogD("sp-file-finished", lesp, func(les LEs) string {
                                                        return logMsg(les) + ": finished"
@@ -961,7 +962,7 @@ func (state *SPState) StartWorkers(
                                                        delete(state.progressBars, pktName)
                                                }
                                        } else {
-                                               state.queueTheir[0].freq.Offset += uint64(len(buf))
+                                               state.queueTheir[0].freq.Offset = ourSize
                                        }
                                } else {
                                        state.Ctx.LogD("sp-file-disappeared", lesp, func(les LEs) string {