Merge pull request #104725 from NoicFank/master

Improve DeltaFIFO function 'ListKeys'

Kubernetes-commit: 170f64d58bdf08be5dfd7711c505f36f2503b1c2
This commit is contained in:
Kubernetes Publisher 2021-09-13 05:14:07 -07:00
commit b36b60b678
2 changed files with 22 additions and 2 deletions

View File

@ -458,8 +458,8 @@ func (f *DeltaFIFO) listLocked() []interface{} {
func (f *DeltaFIFO) ListKeys() []string {
f.lock.RLock()
defer f.lock.RUnlock()
list := make([]string, 0, len(f.items))
for key := range f.items {
list := make([]string, 0, len(f.queue))
for _, key := range f.queue {
list = append(list, key)
}
return list

View File

@ -694,3 +694,23 @@ func TestDeltaFIFO_PopShouldUnblockWhenClosed(t *testing.T) {
}
}
}
func BenchmarkDeltaFIFOListKeys(b *testing.B) {
f := NewDeltaFIFOWithOptions(DeltaFIFOOptions{KeyFunction: testFifoObjectKeyFunc})
const amount = 10000
for i := 0; i < amount; i++ {
f.Add(mkFifoObj(string([]rune{'a', rune(i)}), i+1))
}
for u := uint64(0); u < amount; u++ {
f.Add(mkFifoObj(string([]rune{'b', rune(u)}), u+1))
}
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
_ = f.ListKeys()
}
})
b.StopTimer()
}