arbo/dbg.go
dbg.goRaw
1package arbo
2
3import "fmt"
4
5// dbgStats is for debug purposes
6type dbgStats struct {
7 hash int
8 dbGet int
9 dbPut int
10}
11
12func (t *Tree) dbgInit() {
13 t.dbg = newDbgStats()
14}
15
16func newDbgStats() *dbgStats {
17 return &dbgStats{
18 hash: 0,
19 dbGet: 0,
20 dbPut: 0,
21 }
22}
23
24func (d *dbgStats) incHash() {
25 if d == nil {
26 return
27 }
28 d.hash++
29}
30
31func (d *dbgStats) incDbGet() {
32 if d == nil {
33 return
34 }
35 d.dbGet++
36}
37
38func (d *dbgStats) incDbPut() {
39 if d == nil {
40 return
41 }
42 d.dbPut++
43}
44
45func (d *dbgStats) add(d2 *dbgStats) {
46 if d == nil || d2 == nil {
47 return
48 }
49 d.hash += d2.hash
50 d.dbGet += d2.dbGet
51 d.dbPut += d2.dbPut
52}
53
54func (d *dbgStats) print(prefix string) {
55 if d == nil {
56 return
57 }
58 fmt.Printf("%sdbgStats(hash: %s, dbGet: %s, dbPut: %s)\n",
59 prefix, formatK(d.hash), formatK(d.dbGet), formatK(d.dbPut))
60}
61
62func formatK(v int) string {
63 if v/1000 > 0 {
64 return fmt.Sprintf("%.3fk", float64(v)/1000) //nolint:gomnd
65 }
66 return fmt.Sprintf("%d", v)
67}