From aa2b5aec1b4b92aa83dc4ed4c4c99a213286a4f3 Mon Sep 17 00:00:00 2001 From: sharat Date: Wed, 16 Nov 2016 20:18:29 +0530 Subject: [PATCH] mvcc : Added benchmark for store.resotre --- mvcc/kvstore.go | 1 + mvcc/kvstore_bench_test.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/mvcc/kvstore.go b/mvcc/kvstore.go index 885036e20..28a18a065 100644 --- a/mvcc/kvstore.go +++ b/mvcc/kvstore.go @@ -463,6 +463,7 @@ func (s *store) restore() error { scheduledCompact = 0 } } + tx.Unlock() if scheduledCompact != 0 { diff --git a/mvcc/kvstore_bench_test.go b/mvcc/kvstore_bench_test.go index d7a67e3c2..c111613ce 100644 --- a/mvcc/kvstore_bench_test.go +++ b/mvcc/kvstore_bench_test.go @@ -85,3 +85,40 @@ func BenchmarkStoreTxnPut(b *testing.B) { s.TxnEnd(id) } } + +// benchmarkStoreRestore benchmarks the restore operation +func benchmarkStoreRestore(revsPerKey int, b *testing.B) { + var i fakeConsistentIndex + be, tmpPath := backend.NewDefaultTmpBackend() + s := NewStore(be, &lease.FakeLessor{}, &i) + defer cleanup(s, be, tmpPath) + + // arbitrary number of bytes + bytesN := 64 + keys := createBytesSlice(bytesN, b.N) + vals := createBytesSlice(bytesN, b.N) + + for i := 0; i < b.N; i++ { + for j := 0; j < revsPerKey; j++ { + id := s.TxnBegin() + if _, err := s.TxnPut(id, keys[i], vals[i], lease.NoLease); err != nil { + plog.Fatalf("txn put error: %v", err) + } + s.TxnEnd(id) + } + } + b.ResetTimer() + s = NewStore(be, &lease.FakeLessor{}, &i) +} + +func BenchmarkStoreRestoreRevs1(b *testing.B) { + benchmarkStoreRestore(1, b) +} + +func BenchmarkStoreRestoreRevs10(b *testing.B) { + benchmarkStoreRestore(10, b) +} + +func BenchmarkStoreRestoreRevs20(b *testing.B) { + benchmarkStoreRestore(20, b) +}