-
Notifications
You must be signed in to change notification settings - Fork 96
/
benchmark_test.go
59 lines (55 loc) · 1.28 KB
/
benchmark_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package hashring
import "testing"
func BenchmarkNew(b *testing.B) {
nodes := []string{"a", "b", "c", "d", "e", "f", "g"}
b.ResetTimer()
for i := 0; i < b.N; i++ {
_ = New(nodes)
}
}
func BenchmarkHashes(b *testing.B) {
nodes := []string{"a", "b", "c", "d", "e", "f", "g"}
ring := New(nodes)
tt := []struct {
key string
nodes []string
}{
{"test", []string{"a", "b"}},
{"test", []string{"a", "b"}},
{"test1", []string{"b", "d"}},
{"test2", []string{"f", "b"}},
{"test3", []string{"f", "c"}},
{"test4", []string{"c", "b"}},
{"test5", []string{"f", "a"}},
{"aaaa", []string{"b", "a"}},
{"bbbb", []string{"f", "a"}},
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
o := tt[i%len(tt)]
ring.GetNodes(o.key, 2)
}
}
func BenchmarkHashesSingle(b *testing.B) {
nodes := []string{"a", "b", "c", "d", "e", "f", "g"}
ring := New(nodes)
tt := []struct {
key string
nodes []string
}{
{"test", []string{"a", "b"}},
{"test", []string{"a", "b"}},
{"test1", []string{"b", "d"}},
{"test2", []string{"f", "b"}},
{"test3", []string{"f", "c"}},
{"test4", []string{"c", "b"}},
{"test5", []string{"f", "a"}},
{"aaaa", []string{"b", "a"}},
{"bbbb", []string{"f", "a"}},
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
o := tt[i%len(tt)]
ring.GetNode(o.key)
}
}