From 889cfd1b441e8039bb6b78e8c54276b8eb03cdef Mon Sep 17 00:00:00 2001 From: Alexander Morozov Date: Mon, 2 Oct 2017 11:14:42 -0700 Subject: [PATCH] pkg/locker: add benchmarks Signed-off-by: Alexander Morozov --- pkg/locker/locker_test.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/pkg/locker/locker_test.go b/pkg/locker/locker_test.go index 5a297dd47b..39633c93f0 100644 --- a/pkg/locker/locker_test.go +++ b/pkg/locker/locker_test.go @@ -1,6 +1,8 @@ package locker import ( + "math/rand" + "strconv" "sync" "testing" "time" @@ -122,3 +124,38 @@ func TestLockerConcurrency(t *testing.T) { t.Fatalf("lock should not exist: %v", ctr) } } + +func BenchmarkLocker(b *testing.B) { + l := New() + for i := 0; i < b.N; i++ { + l.Lock("test") + l.Unlock("test") + } +} + +func BenchmarkLockerParallel(b *testing.B) { + l := New() + b.SetParallelism(128) + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + l.Lock("test") + l.Unlock("test") + } + }) +} + +func BenchmarkLockerMoreKeys(b *testing.B) { + l := New() + var keys []string + for i := 0; i < 64; i++ { + keys = append(keys, strconv.Itoa(i)) + } + b.SetParallelism(128) + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + k := keys[rand.Intn(len(keys))] + l.Lock(k) + l.Unlock(k) + } + }) +}