metrics.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package main
  2. import (
  3. "fmt"
  4. "metrics"
  5. "time"
  6. )
  7. func main() {
  8. r := metrics.NewRegistry()
  9. /*
  10. c := metrics.NewCounter()
  11. r.RegisterCounter("foo", c)
  12. for i := 0; i < 1000; i++ {
  13. go func() {
  14. for {
  15. c.Dec(19)
  16. time.Sleep(300e6)
  17. }
  18. }()
  19. go func() {
  20. for {
  21. c.Inc(47)
  22. time.Sleep(400e6)
  23. }
  24. }()
  25. }
  26. for {
  27. fmt.Printf("c.Count(): %v\n", c.Count())
  28. time.Sleep(500e6)
  29. }
  30. */
  31. /*
  32. g := metrics.NewGauge()
  33. r.RegisterGauge("bar", g)
  34. for i := 0; i < 1000; i++ {
  35. go func() {
  36. for {
  37. g.Update(19)
  38. time.Sleep(300e6)
  39. }
  40. }()
  41. go func() {
  42. for {
  43. g.Update(47)
  44. time.Sleep(400e6)
  45. }
  46. }()
  47. }
  48. for {
  49. fmt.Printf("g.Value(): %v\n", g.Value())
  50. time.Sleep(500e6)
  51. }
  52. */
  53. s := metrics.NewUniformSample(1028)
  54. h := metrics.NewHistogram(s)
  55. r.RegisterHistogram("baz", h)
  56. for i := 0; i < 1000; i++ {
  57. go func() {
  58. for {
  59. h.Update(19)
  60. time.Sleep(300e6)
  61. }
  62. }()
  63. go func() {
  64. for {
  65. h.Update(47)
  66. time.Sleep(400e6)
  67. }
  68. }()
  69. }
  70. for {
  71. fmt.Printf(
  72. "h: %v %v %v %v %v %v %v %v %v\n",
  73. h.Count(), h.Sum(), h.Min(), h.Max(),
  74. h.Percentile(95.0), h.Percentile(99.0), h.Percentile(99.9),
  75. h.StdDev(), h.Variance(),
  76. )
  77. time.Sleep(500e6)
  78. }
  79. }