提交 764cbe1c 作者: Steven Allen

bitswap: better wantlist allocation patterns

License: MIT
Signed-off-by: 's avatarSteven Allen <steven@stebalien.com>
上级 cb2ed892
...@@ -451,8 +451,9 @@ func (bs *Bitswap) Close() error { ...@@ -451,8 +451,9 @@ func (bs *Bitswap) Close() error {
} }
func (bs *Bitswap) GetWantlist() []*cid.Cid { func (bs *Bitswap) GetWantlist() []*cid.Cid {
var out []*cid.Cid entries := bs.wm.wl.Entries()
for _, e := range bs.wm.wl.Entries() { out := make([]*cid.Cid, 0, len(entries))
for _, e := range entries {
out = append(out, e.Cid) out = append(out, e.Cid)
} }
return out return out
......
...@@ -126,7 +126,7 @@ func (w *ThreadSafe) Contains(k *cid.Cid) (*Entry, bool) { ...@@ -126,7 +126,7 @@ func (w *ThreadSafe) Contains(k *cid.Cid) (*Entry, bool) {
func (w *ThreadSafe) Entries() []*Entry { func (w *ThreadSafe) Entries() []*Entry {
w.lk.RLock() w.lk.RLock()
defer w.lk.RUnlock() defer w.lk.RUnlock()
var es entrySlice es := make([]*Entry, 0, len(w.set))
for _, e := range w.set { for _, e := range w.set {
es = append(es, e) es = append(es, e)
} }
...@@ -134,13 +134,8 @@ func (w *ThreadSafe) Entries() []*Entry { ...@@ -134,13 +134,8 @@ func (w *ThreadSafe) Entries() []*Entry {
} }
func (w *ThreadSafe) SortedEntries() []*Entry { func (w *ThreadSafe) SortedEntries() []*Entry {
w.lk.RLock() es := w.Entries()
defer w.lk.RUnlock() sort.Sort(entrySlice(es))
var es entrySlice
for _, e := range w.set {
es = append(es, e)
}
sort.Sort(es)
return es return es
} }
...@@ -194,7 +189,7 @@ func (w *Wantlist) Contains(k *cid.Cid) (*Entry, bool) { ...@@ -194,7 +189,7 @@ func (w *Wantlist) Contains(k *cid.Cid) (*Entry, bool) {
} }
func (w *Wantlist) Entries() []*Entry { func (w *Wantlist) Entries() []*Entry {
var es entrySlice es := make([]*Entry, 0, len(w.set))
for _, e := range w.set { for _, e := range w.set {
es = append(es, e) es = append(es, e)
} }
...@@ -202,10 +197,7 @@ func (w *Wantlist) Entries() []*Entry { ...@@ -202,10 +197,7 @@ func (w *Wantlist) Entries() []*Entry {
} }
func (w *Wantlist) SortedEntries() []*Entry { func (w *Wantlist) SortedEntries() []*Entry {
var es entrySlice es := w.Entries()
for _, e := range w.set { sort.Sort(entrySlice(es))
es = append(es, e)
}
sort.Sort(es)
return es return es
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论