Browse Source

mvcc: add benchmark for watch put and improve it

Xiang Li 9 years ago
parent
commit
ad327e01d0
2 changed files with 17 additions and 1 deletions
  1. 1 1
      mvcc/kvstore.go
  2. 16 0
      mvcc/watchable_store_bench_test.go

+ 1 - 1
mvcc/kvstore.go

@@ -580,7 +580,7 @@ func (s *store) delete(key []byte, rev revision) {
 
 func (s *store) getChanges() []mvccpb.KeyValue {
 	changes := s.changes
-	s.changes = make([]mvccpb.KeyValue, 0, 128)
+	s.changes = make([]mvccpb.KeyValue, 0, 4)
 	return changes
 }
 

+ 16 - 0
mvcc/watchable_store_bench_test.go

@@ -23,6 +23,22 @@ import (
 	"github.com/coreos/etcd/mvcc/backend"
 )
 
+func BenchmarkWatchableStorePut(b *testing.B) {
+	be, tmpPath := backend.NewDefaultTmpBackend()
+	s := New(be, &lease.FakeLessor{}, nil)
+	defer cleanup(s, be, tmpPath)
+
+	// arbitrary number of bytes
+	bytesN := 64
+	keys := createBytesSlice(bytesN, b.N)
+	vals := createBytesSlice(bytesN, b.N)
+
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		s.Put(keys[i], vals[i], lease.NoLease)
+	}
+}
+
 // Benchmarks on cancel function performance for unsynced watchers
 // in a WatchableStore. It creates k*N watchers to populate unsynced
 // with a reasonably large number of watchers. And measures the time it