You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.0 KiB

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