mirror of
https://github.com/ipfs/kubo.git
synced 2025-09-09 19:32:24 +08:00
feat(PQ)
refactor: peerRequestQueue it's a mistake to make one queue to fit all. Go's lack of algebraic types turns a generalized queue into a monstrosity of type checking/casting. Better to have individual queues for individual purposes. Conflicts: exchange/bitswap/decision/bench_test.go exchange/bitswap/decision/tasks/task_queue.go fix(bitswap.decision.PRQ): if peers match, always return result of pri comparison fix(bitswap.decision.Engine): push to the queue before notifying TOCTOU bug 1. client notifies 2. worker checks (finds nil) 3. worker sleeps 3. client pushes (worker missed the update) test(PQ): improve documentation and add test test(bitswap.decision.Engine): handling received messages License: MIT Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
This commit is contained in:
@ -13,12 +13,13 @@ import (
|
||||
// FWIW: At the time of this commit, including a timestamp in task increases
|
||||
// time cost of Push by 3%.
|
||||
func BenchmarkTaskQueuePush(b *testing.B) {
|
||||
q := newTaskQueue()
|
||||
q := newPRQ()
|
||||
peers := []peer.ID{
|
||||
testutil.RandPeerIDFatal(b),
|
||||
testutil.RandPeerIDFatal(b),
|
||||
testutil.RandPeerIDFatal(b),
|
||||
}
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
q.Push(wantlist.Entry{Key: util.Key(i), Priority: math.MaxInt32}, peers[i%len(peers)])
|
||||
}
|
||||
|
Reference in New Issue
Block a user