arnaucube
arnaucube/arboPublic Self-hosted repository
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}