Signed-off-by: Alexander Morozov <lk4d4math@gmail.com>
| ... | ... |
@@ -1,6 +1,8 @@ |
| 1 | 1 |
package locker |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
+ "math/rand" |
|
| 5 |
+ "strconv" |
|
| 4 | 6 |
"sync" |
| 5 | 7 |
"testing" |
| 6 | 8 |
"time" |
| ... | ... |
@@ -122,3 +124,38 @@ func TestLockerConcurrency(t *testing.T) {
|
| 122 | 122 |
t.Fatalf("lock should not exist: %v", ctr)
|
| 123 | 123 |
} |
| 124 | 124 |
} |
| 125 |
+ |
|
| 126 |
+func BenchmarkLocker(b *testing.B) {
|
|
| 127 |
+ l := New() |
|
| 128 |
+ for i := 0; i < b.N; i++ {
|
|
| 129 |
+ l.Lock("test")
|
|
| 130 |
+ l.Unlock("test")
|
|
| 131 |
+ } |
|
| 132 |
+} |
|
| 133 |
+ |
|
| 134 |
+func BenchmarkLockerParallel(b *testing.B) {
|
|
| 135 |
+ l := New() |
|
| 136 |
+ b.SetParallelism(128) |
|
| 137 |
+ b.RunParallel(func(pb *testing.PB) {
|
|
| 138 |
+ for pb.Next() {
|
|
| 139 |
+ l.Lock("test")
|
|
| 140 |
+ l.Unlock("test")
|
|
| 141 |
+ } |
|
| 142 |
+ }) |
|
| 143 |
+} |
|
| 144 |
+ |
|
| 145 |
+func BenchmarkLockerMoreKeys(b *testing.B) {
|
|
| 146 |
+ l := New() |
|
| 147 |
+ var keys []string |
|
| 148 |
+ for i := 0; i < 64; i++ {
|
|
| 149 |
+ keys = append(keys, strconv.Itoa(i)) |
|
| 150 |
+ } |
|
| 151 |
+ b.SetParallelism(128) |
|
| 152 |
+ b.RunParallel(func(pb *testing.PB) {
|
|
| 153 |
+ for pb.Next() {
|
|
| 154 |
+ k := keys[rand.Intn(len(keys))] |
|
| 155 |
+ l.Lock(k) |
|
| 156 |
+ l.Unlock(k) |
|
| 157 |
+ } |
|
| 158 |
+ }) |
|
| 159 |
+} |