metrics.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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.NewExpDecaySample(1028, 0.015)
  54. // s := metrics.NewUniformSample(1028)
  55. h := metrics.NewHistogram(s)
  56. r.RegisterHistogram("baz", h)
  57. for i := 0; i < 1000; i++ {
  58. go func() {
  59. for {
  60. h.Update(19)
  61. time.Sleep(300e6)
  62. }
  63. }()
  64. go func() {
  65. for {
  66. h.Update(47)
  67. time.Sleep(400e6)
  68. }
  69. }()
  70. }
  71. for {
  72. fmt.Printf(
  73. "h: %v %v %v %v %v %v %v %v %v\n",
  74. h.Count(), h.Sum(), h.Min(), h.Max(),
  75. h.Percentile(95.0), h.Percentile(99.0), h.Percentile(99.9),
  76. h.StdDev(), h.Variance(),
  77. )
  78. time.Sleep(500e6)
  79. }
  80. }