Skip to content

Commit 01c83fa

Browse files
committed
Reset benchmark and fixes
1 parent de6fc0f commit 01c83fa

File tree

1 file changed

+110
-43
lines changed

1 file changed

+110
-43
lines changed

hamt_bench_test.go

Lines changed: 110 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ func (r *rander) randValue(datasize int) []byte {
2727
return buf
2828
}
2929

30+
func (r *rander) selectKey(keys []string) string {
31+
i := rand.Int() % len(keys)
32+
return keys[i]
33+
}
34+
3035
func BenchmarkSerializeNode(b *testing.B) {
3136
r := rander{rand.New(rand.NewSource(1234))}
3237

@@ -87,42 +92,42 @@ func init() {
8792
datasize: 3,
8893
keysize: 26,
8994
},
90-
hamtParams{
91-
id: "market.PendingProposals",
92-
count: 40713,
93-
datasize: 151,
94-
keysize: 38,
95-
},
96-
hamtParams{
97-
id: "market.EscrowWTable",
98-
count: 2113,
99-
datasize: 7,
100-
keysize: 4,
101-
},
102-
hamtParams{
103-
id: "market.LockedTable",
104-
count: 2098,
105-
datasize: 4,
106-
keysize: 4,
107-
},
108-
hamtParams{
109-
id: "market.DealOpsByEpoch",
110-
count: 16558,
111-
datasize: 43,
112-
keysize: 3,
113-
},
114-
hamtParams{
115-
id: "power.CronEventQueue",
116-
count: 60,
117-
datasize: 43,
118-
keysize: 3,
119-
},
120-
hamtParams{
121-
id: "power.CLaims",
122-
count: 15610,
123-
datasize: 5,
124-
keysize: 3,
125-
},
95+
// hamtParams{
96+
// id: "market.PendingProposals",
97+
// count: 40713,
98+
// datasize: 151,
99+
// keysize: 38,
100+
// },
101+
// hamtParams{
102+
// id: "market.EscrowWTable",
103+
// count: 2113,
104+
// datasize: 7,
105+
// keysize: 4,
106+
// },
107+
// hamtParams{
108+
// id: "market.LockedTable",
109+
// count: 2098,
110+
// datasize: 4,
111+
// keysize: 4,
112+
// },
113+
// hamtParams{
114+
// id: "market.DealOpsByEpoch",
115+
// count: 16558,
116+
// datasize: 43,
117+
// keysize: 3,
118+
// },
119+
// hamtParams{
120+
// id: "power.CronEventQueue",
121+
// count: 60,
122+
// datasize: 43,
123+
// keysize: 3,
124+
// },
125+
// hamtParams{
126+
// id: "power.CLaims",
127+
// count: 15610,
128+
// datasize: 5,
129+
// keysize: 3,
130+
// },
126131
}
127132

128133
// bucketsize-aka-arraywidth? maybe someday.
@@ -305,21 +310,83 @@ func doBenchmarkEntriesCount(num int, bitWidth int, datasize int, keysize int) f
305310
}
306311

307312
runtime.GC()
308-
blockstore.stats = blockstoreStats{}
309313
b.ResetTimer()
310314
b.ReportAllocs()
311315

312316
for i := 0; i < b.N; i++ {
313-
nd, err := LoadNode(context.TODO(), cs, c, UseTreeBitWidth(bitWidth))
314-
if err != nil {
315-
b.Fatal(err)
317+
blockstore.stats = blockstoreStats{}
318+
for j := 0; j < 1000; j++ {
319+
nd, err := LoadNode(context.TODO(), cs, c, UseTreeBitWidth(bitWidth))
320+
if err != nil {
321+
b.Fatal(err)
322+
}
323+
if err = nd.Find(context.TODO(), r.selectKey(keys), nil); err != nil {
324+
b.Fatal(err)
325+
}
316326
}
327+
b.StopTimer()
328+
b.ReportMetric(float64(blockstore.stats.evtcntGet)/float64(1000), "getEvts/find")
329+
b.ReportMetric(float64(blockstore.stats.evtcntPut)/float64(1000), "putEvts/find") // surely this is zero, but for completeness.
330+
b.StartTimer()
331+
}
332+
}
333+
}
317334

318-
if err = nd.Find(context.TODO(), keys[i%num], nil); err != nil {
335+
func BenchmarkReset(b *testing.B) {
336+
for _, t := range caseTable {
337+
b.Run(fmt.Sprintf("%s", t.id),
338+
doBenchmarkResetSuite(t.count, t.bitwidth, t.datasize, t.keysize))
339+
}
340+
}
341+
342+
func doBenchmarkResetSuite(num int, bitWidth int, datasize int, keysize int) func(b *testing.B) {
343+
r := rander{rand.New(rand.NewSource(int64(num)))}
344+
return func(b *testing.B) {
345+
blockstore := newMockBlocks()
346+
cs := cbor.NewCborStore(blockstore)
347+
n := NewNode(cs, UseTreeBitWidth(bitWidth))
348+
349+
var keys []string
350+
for i := 0; i < num; i++ {
351+
k := r.randString(keysize)
352+
if err := n.Set(context.TODO(), k, r.randValue(datasize)); err != nil {
319353
b.Fatal(err)
320354
}
355+
keys = append(keys, k)
356+
}
357+
358+
if err := n.Flush(context.TODO()); err != nil {
359+
b.Fatal(err)
360+
}
361+
362+
c, err := cs.Put(context.TODO(), n)
363+
if err != nil {
364+
b.Fatal(err)
365+
}
366+
367+
runtime.GC()
368+
b.ResetTimer()
369+
b.ReportAllocs()
370+
371+
for i := 0; i < b.N; i++ {
372+
blockstore.stats = blockstoreStats{}
373+
for j := 0; j < 1000; j++ {
374+
nd, err := LoadNode(context.TODO(), cs, c, UseTreeBitWidth(bitWidth))
375+
if err != nil {
376+
b.Fatal(err)
377+
}
378+
if err := nd.Set(context.Background(), r.selectKey(keys), r.randValue(datasize)); err != nil {
379+
b.Fatal(err)
380+
}
381+
if err := nd.Flush(context.Background()); err != nil {
382+
b.Fatal(err)
383+
}
384+
}
385+
b.StopTimer()
386+
b.ReportMetric(float64(blockstore.stats.evtcntGet)/1000, "getEvts/set")
387+
b.ReportMetric(float64(blockstore.stats.evtcntPut)/1000, "putEvts/set")
388+
b.ReportMetric(float64(blockstore.stats.bytesPut)/1000, "bytesPut/set")
389+
b.StartTimer()
321390
}
322-
b.ReportMetric(float64(blockstore.stats.evtcntGet)/float64(b.N), "getEvts/find")
323-
b.ReportMetric(float64(blockstore.stats.evtcntPut)/float64(b.N), "putEvts/find") // surely this is zero, but for completeness.
324391
}
325392
}

0 commit comments

Comments
 (0)