Explorar o código

Benchmark sample implementations

Pieter Noordhuis %!s(int64=13) %!d(string=hai) anos
pai
achega
0930063191
Modificáronse 1 ficheiros con 48 adicións e 1 borrados
  1. 48 1
      sample_test.go

+ 48 - 1
sample_test.go

@@ -1,6 +1,10 @@
 package metrics
 package metrics
 
 
-import "testing"
+import (
+	"math/rand"
+	"runtime"
+	"testing"
+)
 
 
 func TestExpDecaySample10(t *testing.T) {
 func TestExpDecaySample10(t *testing.T) {
 	s := NewExpDecaySample(100, 0.99)
 	s := NewExpDecaySample(100, 0.99)
@@ -73,3 +77,46 @@ func TestUniformSample(t *testing.T) {
 		}
 		}
 	}
 	}
 }
 }
+
+func benchmarkSample(b *testing.B, s Sample) {
+	var m runtime.MemStats
+	var p [2]uint64
+
+	runtime.ReadMemStats(&m)
+	p[0] = m.PauseTotalNs
+
+	for i := 0; i < b.N; i++ {
+		s.Update(rand.Int63())
+	}
+
+	runtime.GC()
+
+	runtime.ReadMemStats(&m)
+	p[1] = m.PauseTotalNs
+
+	b.Logf("GC cost: %d ns/op", int(p[1]-p[0])/b.N)
+}
+
+func BenchmarkExpDecaySample257(b *testing.B) {
+	benchmarkSample(b, NewExpDecaySample(257, 0.015))
+}
+
+func BenchmarkExpDecaySample514(b *testing.B) {
+	benchmarkSample(b, NewExpDecaySample(514, 0.015))
+}
+
+func BenchmarkExpDecaySample1028(b *testing.B) {
+	benchmarkSample(b, NewExpDecaySample(1028, 0.015))
+}
+
+func BenchmarkUniformSample257(b *testing.B) {
+	benchmarkSample(b, NewUniformSample(257))
+}
+
+func BenchmarkUniformSample514(b *testing.B) {
+	benchmarkSample(b, NewUniformSample(514))
+}
+
+func BenchmarkUniformSample1028(b *testing.B) {
+	benchmarkSample(b, NewUniformSample(1028))
+}