Codebase list golang-github-spaolacci-murmur3 / upstream/1.1.0
Import upstream version 1.1.0 Debian Janitor 2 years ago
1 changed file(s) with 56 addition(s) and 136 deletion(s). Raw diff Collapse all Expand all
11
22 import (
33 "fmt"
4 "strconv"
45 "testing"
56 )
67
112113 }
113114 }
114115
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 })
123127 }
124128 }
125129
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))
168136
169 //---
137 start := (32 / 8) / 2
138 chunks := 7
139 k := length / chunks
140 tail := (length - start) % k
170141
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])
174146
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 }
179150
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 })
191155 }
192156 }
193157
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 })
218169 }
219170 }
220171
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 }
223184 }
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 //---