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)