bitswap: better wantlist allocation patterns
License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
Steven Allen committed
Dec 5, 2017 at 09:43 UTC
764cbe1c5b9c3e7a0365cb36ef0afdd74d6767de
2 files changed
+9
-16
exchange/bitswap/bitswap.go
+3
-2
@@ -451,8 +451,9 @@ func (bs *Bitswap) Close() error {
451
}
452
453
func (bs *Bitswap) GetWantlist() []*cid.Cid {
454
- var out []*cid.Cid
455
- for _, e := range bs.wm.wl.Entries() {
454
+ entries := bs.wm.wl.Entries()
455
+ out := make([]*cid.Cid, 0, len(entries))
456
+ for _, e := range entries {
457
out = append(out, e.Cid)
458
}
459
return out
exchange/bitswap/wantlist/wantlist.go
+6
-14
@@ -126,7 +126,7 @@ func (w *ThreadSafe) Contains(k *cid.Cid) (*Entry, bool) {
126
func (w *ThreadSafe) Entries() []*Entry {
127
w.lk.RLock()
128
defer w.lk.RUnlock()
129
- var es entrySlice
129
+ es := make([]*Entry, 0, len(w.set))
130
for _, e := range w.set {
131
es = append(es, e)
132
}
@@ -134,13 +134,8 @@ func (w *ThreadSafe) Entries() []*Entry {
134
}
135
136
func (w *ThreadSafe) SortedEntries() []*Entry {
137
- w.lk.RLock()
138
- defer w.lk.RUnlock()
139
- var es entrySlice
140
- for _, e := range w.set {
141
- es = append(es, e)
142
- }
143
- sort.Sort(es)
137
+ es := w.Entries()
138
+ sort.Sort(entrySlice(es))
139
return es
140
}
141
@@ -194,7 +189,7 @@ func (w *Wantlist) Contains(k *cid.Cid) (*Entry, bool) {
189
}
190
191
func (w *Wantlist) Entries() []*Entry {
197
- var es entrySlice
192
+ es := make([]*Entry, 0, len(w.set))
193
for _, e := range w.set {
194
es = append(es, e)
195
}
@@ -202,10 +197,7 @@ func (w *Wantlist) Entries() []*Entry {
197
}
198
199
func (w *Wantlist) SortedEntries() []*Entry {
205
- var es entrySlice
206
- for _, e := range w.set {
207
- es = append(es, e)
208
- }
209
- sort.Sort(es)
200
+ es := w.Entries()
201
+ sort.Sort(entrySlice(es))
202
return es
203
}