MCPcopy Create free account
hub / github.com/nutsdb/nutsdb / benchmarkListRange

Function benchmarkListRange

internal/data/list_benchmark_test.go:134–167  ·  view source on GitHub ↗
(b *testing.B, impl data.ListImplementationType, size int)

Source from the content-addressed store, hash-verified

132}
133
134func benchmarkListRange(b *testing.B, impl data.ListImplementationType, size int) {
135 list := data.NewList(impl)
136
137 key := []byte("benchmark_key")
138 keyStr := string(key)
139 seqInfo := data.HeadTailSeq{Head: data.InitialListSeq, Tail: data.InitialListSeq + 1}
140
141 // Pre-generate test data
142 testData := make([]struct {
143 newKey []byte
144 record *core.Record
145 }, size)
146
147 for i := 0; i < size; i++ {
148 seq := seqInfo.GenerateSeq(false)
149 newKey := utils.EncodeListKey(key, seq)
150 testData[i].newKey = newKey
151 testData[i].record = &core.Record{Key: newKey, Value: testutils.GetTestBytes(i)}
152 }
153
154 // Pre-populate with pre-generated data
155 for i := 0; i < size; i++ {
156 if err := list.Push(string(testData[i].newKey), testData[i].record, false); err != nil {
157 b.Fatal(err)
158 }
159 }
160
161 b.ResetTimer()
162 for i := 0; i < b.N; i++ {
163 if _, err := list.LRange(keyStr, 0, size-1); err != nil {
164 b.Fatal(err)
165 }
166 }
167}
168
169func BenchmarkList_LRange_DoublyLinkedList_1000(b *testing.B) {
170 benchmarkListRange(b, data.ListImplDoublyLinkedList, 1000)

Calls 6

GenerateSeqMethod · 0.95
PushMethod · 0.95
LRangeMethod · 0.95
NewListFunction · 0.92
EncodeListKeyFunction · 0.92
GetTestBytesFunction · 0.92

Tested by

no test coverage detected