浏览代码

WIP big benchmark.

Richard Crowley 12 年之前
父节点
当前提交
24bdac6275
共有 1 个文件被更改,包括 58 次插入0 次删除
  1. 58 0
      metrics_test.go

+ 58 - 0
metrics_test.go

@@ -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)
+}