metrics_test.go 886 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package metrics
  2. import (
  3. "io/ioutil"
  4. "testing"
  5. )
  6. var _ = ioutil.Discard // Stop the compiler from complaining during debugging.
  7. func BenchmarkMetrics(b *testing.B) {
  8. c := NewCounter()
  9. g := NewGauge()
  10. h := NewHistogram(NewUniformSample(100))
  11. m := NewMeter()
  12. t := NewTimer()
  13. r := NewRegistry()
  14. r.Register("counter", c)
  15. r.Register("gauge", g)
  16. r.Register("histogram", h)
  17. r.Register("meter", m)
  18. r.Register("timer", t)
  19. RegisterRuntimeMemStats(r)
  20. ch := make(chan bool)
  21. /*
  22. go func() {
  23. for {
  24. select {
  25. case <-ch:
  26. return
  27. default:
  28. CaptureRuntimeMemStatsOnce(r)
  29. }
  30. }
  31. }()
  32. //*/
  33. //*
  34. go func() {
  35. for {
  36. select {
  37. case <-ch:
  38. return
  39. default:
  40. WriteOnce(r, ioutil.Discard)
  41. }
  42. }
  43. }()
  44. //*/
  45. b.ResetTimer()
  46. for i := 0; i < b.N; i++ {
  47. c.Inc(1)
  48. g.Update(int64(i))
  49. h.Update(int64(i))
  50. m.Mark(1)
  51. t.Update(1)
  52. }
  53. b.StopTimer()
  54. close(ch)
  55. }