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
 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}