|
|
@@ -0,0 +1,58 @@
|
|
|
+package metrics
|
|
|
+
|
|
|
+import (
|
|
|
+ "io/ioutil"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+var _ = ioutil.Discard // Stop the compiler from complaining during debugging.
|
|
|
+
|
|
|
+func BenchmarkMetrics(b *testing.B) {
|
|
|
+ c := NewCounter()
|
|
|
+ g := NewGauge()
|
|
|
+ h := NewHistogram(NewUniformSample(100))
|
|
|
+ m := NewMeter()
|
|
|
+ t := NewTimer()
|
|
|
+ r := NewRegistry()
|
|
|
+ r.Register("counter", c)
|
|
|
+ r.Register("gauge", g)
|
|
|
+ r.Register("histogram", h)
|
|
|
+ r.Register("meter", m)
|
|
|
+ r.Register("timer", t)
|
|
|
+ RegisterRuntimeMemStats(r)
|
|
|
+ ch := make(chan bool)
|
|
|
+/*
|
|
|
+ go func() {
|
|
|
+ for {
|
|
|
+ select {
|
|
|
+ case <-ch:
|
|
|
+ return
|
|
|
+ default:
|
|
|
+ CaptureRuntimeMemStatsOnce(r)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }()
|
|
|
+//*/
|
|
|
+//*
|
|
|
+ go func() {
|
|
|
+ for {
|
|
|
+ select {
|
|
|
+ case <-ch:
|
|
|
+ return
|
|
|
+ default:
|
|
|
+ WriteOnce(r, ioutil.Discard)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }()
|
|
|
+//*/
|
|
|
+ b.ResetTimer()
|
|
|
+ for i := 0; i < b.N; i++ {
|
|
|
+ c.Inc(1)
|
|
|
+ g.Update(int64(i))
|
|
|
+ h.Update(int64(i))
|
|
|
+ m.Mark(1)
|
|
|
+ t.Update(1)
|
|
|
+ }
|
|
|
+ b.StopTimer()
|
|
|
+ close(ch)
|
|
|
+}
|