arbo/dbg.go
dbg.goRaw
1package arbo
2
3import "fmt"
4
5// dbgStats is for debug purposes
6type dbgStats struct {
7 hash int // TODO use atomics for all ints in dbgStats
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
31//nolint:unused
32func (d *dbgStats) incDbGet() {
33 if d == nil {
34 return
35 }
36 d.dbGet++
37}
38
39//nolint:unused
40func (d *dbgStats) incDbPut() {
41 if d == nil {
42 return
43 }
44 d.dbPut++
45}
46
47func (d *dbgStats) add(d2 *dbgStats) {
48 if d == nil || d2 == nil {
49 return
50 }
51 d.hash += d2.hash
52 d.dbGet += d2.dbGet
53 d.dbPut += d2.dbPut
54}
55
56func (d *dbgStats) print(prefix string) {
57 if d == nil {
58 return
59 }
60 fmt.Printf("%sdbgStats(hash: %s, dbGet: %s, dbPut: %s)\n",
61 prefix, formatK(d.hash), formatK(d.dbGet), formatK(d.dbPut))
62}
63
64func formatK(v int) string {
65 if v/1000 > 0 {
66 return fmt.Sprintf("%.3fk", float64(v)/1000) //nolint:gomnd
67 }
68 return fmt.Sprintf("%d", v)
69}