Browse code

Improve truncindex benchmarks

Docker-DCO-1.1-Signed-off-by: Alexandr Morozov <lk4d4math@gmail.com> (github: LK4D4)

LK4D4 authored on 2014/06/25 02:41:51
Showing 1 changed files
... ...
@@ -1,6 +1,11 @@
1 1
 package truncindex
2 2
 
3
-import "testing"
3
+import (
4
+	"math/rand"
5
+	"testing"
6
+
7
+	"github.com/dotcloud/docker/utils"
8
+)
4 9
 
5 10
 // Test the behavior of TruncIndex, an index for querying IDs from a non-conflicting prefix.
6 11
 func TestTruncIndex(t *testing.T) {
... ...
@@ -85,21 +90,155 @@ func assertIndexGet(t *testing.T, index *TruncIndex, input, expectedResult strin
85 85
 	}
86 86
 }
87 87
 
88
-func BenchmarkTruncIndexAdd(b *testing.B) {
89
-	ids := []string{"banana", "bananaa", "bananab"}
88
+func BenchmarkTruncIndexAdd100(b *testing.B) {
89
+	var testSet []string
90
+	for i := 0; i < 100; i++ {
91
+		testSet = append(testSet, utils.GenerateRandomID())
92
+	}
90 93
 	b.ResetTimer()
91 94
 	for i := 0; i < b.N; i++ {
92 95
 		index := NewTruncIndex([]string{})
93
-		for _, id := range ids {
94
-			index.Add(id)
96
+		for _, id := range testSet {
97
+			if err := index.Add(id); err != nil {
98
+				b.Fatal(err)
99
+			}
100
+		}
101
+	}
102
+}
103
+
104
+func BenchmarkTruncIndexAdd250(b *testing.B) {
105
+	var testSet []string
106
+	for i := 0; i < 250; i++ {
107
+		testSet = append(testSet, utils.GenerateRandomID())
108
+	}
109
+	b.ResetTimer()
110
+	for i := 0; i < b.N; i++ {
111
+		index := NewTruncIndex([]string{})
112
+		for _, id := range testSet {
113
+			if err := index.Add(id); err != nil {
114
+				b.Fatal(err)
115
+			}
116
+		}
117
+	}
118
+}
119
+
120
+func BenchmarkTruncIndexAdd500(b *testing.B) {
121
+	var testSet []string
122
+	for i := 0; i < 500; i++ {
123
+		testSet = append(testSet, utils.GenerateRandomID())
124
+	}
125
+	b.ResetTimer()
126
+	for i := 0; i < b.N; i++ {
127
+		index := NewTruncIndex([]string{})
128
+		for _, id := range testSet {
129
+			if err := index.Add(id); err != nil {
130
+				b.Fatal(err)
131
+			}
132
+		}
133
+	}
134
+}
135
+
136
+func BenchmarkTruncIndexGet100(b *testing.B) {
137
+	var testSet []string
138
+	var testKeys []string
139
+	for i := 0; i < 100; i++ {
140
+		testSet = append(testSet, utils.GenerateRandomID())
141
+	}
142
+	index := NewTruncIndex([]string{})
143
+	for _, id := range testSet {
144
+		if err := index.Add(id); err != nil {
145
+			b.Fatal(err)
146
+		}
147
+		l := rand.Intn(12) + 12
148
+		testKeys = append(testKeys, id[:l])
149
+	}
150
+	b.ResetTimer()
151
+	for i := 0; i < b.N; i++ {
152
+		for _, id := range testKeys {
153
+			if res, err := index.Get(id); err != nil {
154
+				b.Fatal(res, err)
155
+			}
156
+		}
157
+	}
158
+}
159
+
160
+func BenchmarkTruncIndexGet250(b *testing.B) {
161
+	var testSet []string
162
+	var testKeys []string
163
+	for i := 0; i < 250; i++ {
164
+		testSet = append(testSet, utils.GenerateRandomID())
165
+	}
166
+	index := NewTruncIndex([]string{})
167
+	for _, id := range testSet {
168
+		if err := index.Add(id); err != nil {
169
+			b.Fatal(err)
170
+		}
171
+		l := rand.Intn(12) + 12
172
+		testKeys = append(testKeys, id[:l])
173
+	}
174
+	b.ResetTimer()
175
+	for i := 0; i < b.N; i++ {
176
+		for _, id := range testKeys {
177
+			if res, err := index.Get(id); err != nil {
178
+				b.Fatal(res, err)
179
+			}
95 180
 		}
96 181
 	}
97 182
 }
98 183
 
99
-func BenchmarkTruncIndexNew(b *testing.B) {
100
-	ids := []string{"banana", "bananaa", "bananab"}
184
+func BenchmarkTruncIndexGet500(b *testing.B) {
185
+	var testSet []string
186
+	var testKeys []string
187
+	for i := 0; i < 500; i++ {
188
+		testSet = append(testSet, utils.GenerateRandomID())
189
+	}
190
+	index := NewTruncIndex([]string{})
191
+	for _, id := range testSet {
192
+		if err := index.Add(id); err != nil {
193
+			b.Fatal(err)
194
+		}
195
+		l := rand.Intn(12) + 12
196
+		testKeys = append(testKeys, id[:l])
197
+	}
198
+	b.ResetTimer()
199
+	for i := 0; i < b.N; i++ {
200
+		for _, id := range testKeys {
201
+			if res, err := index.Get(id); err != nil {
202
+				b.Fatal(res, err)
203
+			}
204
+		}
205
+	}
206
+}
207
+
208
+func BenchmarkTruncIndexNew100(b *testing.B) {
209
+	var testSet []string
210
+	for i := 0; i < 100; i++ {
211
+		testSet = append(testSet, utils.GenerateRandomID())
212
+	}
213
+	b.ResetTimer()
214
+	for i := 0; i < b.N; i++ {
215
+		NewTruncIndex(testSet)
216
+	}
217
+}
218
+
219
+func BenchmarkTruncIndexNew250(b *testing.B) {
220
+	var testSet []string
221
+	for i := 0; i < 250; i++ {
222
+		testSet = append(testSet, utils.GenerateRandomID())
223
+	}
224
+	b.ResetTimer()
225
+	for i := 0; i < b.N; i++ {
226
+		NewTruncIndex(testSet)
227
+	}
228
+}
229
+
230
+func BenchmarkTruncIndexNew500(b *testing.B) {
231
+	var testSet []string
232
+	for i := 0; i < 500; i++ {
233
+		testSet = append(testSet, utils.GenerateRandomID())
234
+	}
101 235
 	b.ResetTimer()
102 236
 	for i := 0; i < b.N; i++ {
103
-		NewTruncIndex(ids)
237
+		NewTruncIndex(testSet)
104 238
 	}
105 239
 }