Import upstream version 1.1.0
Debian Janitor
2 years ago
1 | 1 | |
2 | 2 | import ( |
3 | 3 | "fmt" |
4 | "strconv" | |
4 | 5 | "testing" |
5 | 6 | ) |
6 | 7 | |
112 | 113 | } |
113 | 114 | } |
114 | 115 | |
115 | //--- | |
116 | ||
117 | func bench32(b *testing.B, length int) { | |
118 | buf := make([]byte, length) | |
119 | b.SetBytes(int64(length)) | |
120 | b.ResetTimer() | |
121 | for i := 0; i < b.N; i++ { | |
122 | Sum32(buf) | |
116 | func Benchmark32(b *testing.B) { | |
117 | buf := make([]byte, 8192) | |
118 | for length := 1; length <= cap(buf); length *= 2 { | |
119 | b.Run(strconv.Itoa(length), func(b *testing.B) { | |
120 | buf = buf[:length] | |
121 | b.SetBytes(int64(length)) | |
122 | b.ResetTimer() | |
123 | for i := 0; i < b.N; i++ { | |
124 | Sum32(buf) | |
125 | } | |
126 | }) | |
123 | 127 | } |
124 | 128 | } |
125 | 129 | |
126 | func Benchmark32_1(b *testing.B) { | |
127 | bench32(b, 1) | |
128 | } | |
129 | func Benchmark32_2(b *testing.B) { | |
130 | bench32(b, 2) | |
131 | } | |
132 | func Benchmark32_4(b *testing.B) { | |
133 | bench32(b, 4) | |
134 | } | |
135 | func Benchmark32_8(b *testing.B) { | |
136 | bench32(b, 8) | |
137 | } | |
138 | func Benchmark32_16(b *testing.B) { | |
139 | bench32(b, 16) | |
140 | } | |
141 | func Benchmark32_32(b *testing.B) { | |
142 | bench32(b, 32) | |
143 | } | |
144 | func Benchmark32_64(b *testing.B) { | |
145 | bench32(b, 64) | |
146 | } | |
147 | func Benchmark32_128(b *testing.B) { | |
148 | bench32(b, 128) | |
149 | } | |
150 | func Benchmark32_256(b *testing.B) { | |
151 | bench32(b, 256) | |
152 | } | |
153 | func Benchmark32_512(b *testing.B) { | |
154 | bench32(b, 512) | |
155 | } | |
156 | func Benchmark32_1024(b *testing.B) { | |
157 | bench32(b, 1024) | |
158 | } | |
159 | func Benchmark32_2048(b *testing.B) { | |
160 | bench32(b, 2048) | |
161 | } | |
162 | func Benchmark32_4096(b *testing.B) { | |
163 | bench32(b, 4096) | |
164 | } | |
165 | func Benchmark32_8192(b *testing.B) { | |
166 | bench32(b, 8192) | |
167 | } | |
130 | func BenchmarkPartial32(b *testing.B) { | |
131 | buf := make([]byte, 128) | |
132 | for length := 8; length <= cap(buf); length *= 2 { | |
133 | b.Run(strconv.Itoa(length), func(b *testing.B) { | |
134 | buf = buf[:length] | |
135 | b.SetBytes(int64(length)) | |
168 | 136 | |
169 | //--- | |
137 | start := (32 / 8) / 2 | |
138 | chunks := 7 | |
139 | k := length / chunks | |
140 | tail := (length - start) % k | |
170 | 141 | |
171 | func benchPartial32(b *testing.B, length int) { | |
172 | buf := make([]byte, length) | |
173 | b.SetBytes(int64(length)) | |
142 | b.ResetTimer() | |
143 | for i := 0; i < b.N; i++ { | |
144 | hasher := New32() | |
145 | hasher.Write(buf[0:start]) | |
174 | 146 | |
175 | start := (32 / 8) / 2 | |
176 | chunks := 7 | |
177 | k := length / chunks | |
178 | tail := (length - start) % k | |
147 | for j := start; j+k <= length; j += k { | |
148 | hasher.Write(buf[j : j+k]) | |
149 | } | |
179 | 150 | |
180 | b.ResetTimer() | |
181 | for i := 0; i < b.N; i++ { | |
182 | hasher := New32() | |
183 | hasher.Write(buf[0:start]) | |
184 | ||
185 | for j := start; j+k <= length; j += k { | |
186 | hasher.Write(buf[j : j+k]) | |
187 | } | |
188 | ||
189 | hasher.Write(buf[length-tail:]) | |
190 | hasher.Sum32() | |
151 | hasher.Write(buf[length-tail:]) | |
152 | hasher.Sum32() | |
153 | } | |
154 | }) | |
191 | 155 | } |
192 | 156 | } |
193 | 157 | |
194 | func BenchmarkPartial32_8(b *testing.B) { | |
195 | benchPartial32(b, 8) | |
196 | } | |
197 | func BenchmarkPartial32_16(b *testing.B) { | |
198 | benchPartial32(b, 16) | |
199 | } | |
200 | func BenchmarkPartial32_32(b *testing.B) { | |
201 | benchPartial32(b, 32) | |
202 | } | |
203 | func BenchmarkPartial32_64(b *testing.B) { | |
204 | benchPartial32(b, 64) | |
205 | } | |
206 | func BenchmarkPartial32_128(b *testing.B) { | |
207 | benchPartial32(b, 128) | |
208 | } | |
209 | ||
210 | //--- | |
211 | ||
212 | func bench128(b *testing.B, length int) { | |
213 | buf := make([]byte, length) | |
214 | b.SetBytes(int64(length)) | |
215 | b.ResetTimer() | |
216 | for i := 0; i < b.N; i++ { | |
217 | Sum128(buf) | |
158 | func Benchmark64(b *testing.B) { | |
159 | buf := make([]byte, 8192) | |
160 | for length := 1; length <= cap(buf); length *= 2 { | |
161 | b.Run(strconv.Itoa(length), func(b *testing.B) { | |
162 | buf = buf[:length] | |
163 | b.SetBytes(int64(length)) | |
164 | b.ResetTimer() | |
165 | for i := 0; i < b.N; i++ { | |
166 | Sum64(buf) | |
167 | } | |
168 | }) | |
218 | 169 | } |
219 | 170 | } |
220 | 171 | |
221 | func Benchmark128_1(b *testing.B) { | |
222 | bench128(b, 1) | |
172 | func Benchmark128(b *testing.B) { | |
173 | buf := make([]byte, 8192) | |
174 | for length := 1; length <= cap(buf); length *= 2 { | |
175 | b.Run(strconv.Itoa(length), func(b *testing.B) { | |
176 | buf = buf[:length] | |
177 | b.SetBytes(int64(length)) | |
178 | b.ResetTimer() | |
179 | for i := 0; i < b.N; i++ { | |
180 | Sum128(buf) | |
181 | } | |
182 | }) | |
183 | } | |
223 | 184 | } |
224 | func Benchmark128_2(b *testing.B) { | |
225 | bench128(b, 2) | |
226 | } | |
227 | func Benchmark128_4(b *testing.B) { | |
228 | bench128(b, 4) | |
229 | } | |
230 | func Benchmark128_8(b *testing.B) { | |
231 | bench128(b, 8) | |
232 | } | |
233 | func Benchmark128_16(b *testing.B) { | |
234 | bench128(b, 16) | |
235 | } | |
236 | func Benchmark128_32(b *testing.B) { | |
237 | bench128(b, 32) | |
238 | } | |
239 | func Benchmark128_64(b *testing.B) { | |
240 | bench128(b, 64) | |
241 | } | |
242 | func Benchmark128_128(b *testing.B) { | |
243 | bench128(b, 128) | |
244 | } | |
245 | func Benchmark128_256(b *testing.B) { | |
246 | bench128(b, 256) | |
247 | } | |
248 | func Benchmark128_512(b *testing.B) { | |
249 | bench128(b, 512) | |
250 | } | |
251 | func Benchmark128_1024(b *testing.B) { | |
252 | bench128(b, 1024) | |
253 | } | |
254 | func Benchmark128_2048(b *testing.B) { | |
255 | bench128(b, 2048) | |
256 | } | |
257 | func Benchmark128_4096(b *testing.B) { | |
258 | bench128(b, 4096) | |
259 | } | |
260 | func Benchmark128_8192(b *testing.B) { | |
261 | bench128(b, 8192) | |
262 | } | |
263 | ||
264 | //--- |