@cryptotaxi247 / kubo / commits / 0f8155b66

bitswap: preallocate peers array on bitswap stat

Avoids lots of reallocations under a lock. License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>

Steven Allen committed Dec 5, 2017 at 09:08 UTC 0f8155b668124a9ba9c8a6305547bd988aa67772
2 files changed +6 -2
exchange/bitswap/decision/engine.go
+2 -1
@@ -201,7 +201,8 @@ func (e *Engine) Peers() []peer.ID {
201 e.lock.Lock()
202 defer e.lock.Unlock()
203
204 - response := make([]peer.ID, 0)
204 + response := make([]peer.ID, 0, len(e.ledgerMap))
205 +
206 for _, ledger := range e.ledgerMap {
207 response = append(response, ledger.Partner)
208 }
exchange/bitswap/stat.go
+4 -1
@@ -32,7 +32,10 @@ func (bs *Bitswap) Stat() (*Stat, error) {
32 st.DataReceived = c.dataRecvd
33 bs.counterLk.Unlock()
34
35 - for _, p := range bs.engine.Peers() {
35 + peers := bs.engine.Peers()
36 + st.Peers = make([]string, 0, len(peers))
37 +
38 + for _, p := range peers {
39 st.Peers = append(st.Peers, p.Pretty())
40 }
41 sort.Strings(st.Peers)