~chipaca/ubuntu-push/cherrypickings

88.1.1 by Samuele Pedroni (Canonical Services Ltd.)
add murmur3
1
murmur3
2
=======
3
4
Native Go implementation of Austin Appleby's third MurmurHash revision (aka
5
MurmurHash3).
6
7
Reference algorithm has been slightly hacked as to support the streaming mode
8
required by Go's standard [Hash interface](http://golang.org/pkg/hash/#Hash).
9
10
11
Benchmarks
12
----------
13
14
Go tip as of 2013-03-11 (i.e almost go1.1), core i7 @ 3.4 Ghz. All runs
15
include hasher instanciation and sequence finalization.
16
17
<pre>
18
19
Benchmark32_1       200000000         8.4 ns/op       119.39 MB/s
20
Benchmark32_2       200000000         9.5 ns/op       211.69 MB/s
21
Benchmark32_4       500000000         7.9 ns/op       506.24 MB/s
22
Benchmark32_8       200000000         9.4 ns/op       853.40 MB/s
23
Benchmark32_16      100000000        12.1 ns/op      1324.19 MB/s
24
Benchmark32_32      100000000        18.2 ns/op      1760.81 MB/s
25
Benchmark32_64       50000000        31.2 ns/op      2051.59 MB/s
26
Benchmark32_128      50000000        58.7 ns/op      2180.34 MB/s
27
Benchmark32_256      20000000       116.0 ns/op      2194.85 MB/s
28
Benchmark32_512      10000000       227.0 ns/op      2247.43 MB/s
29
Benchmark32_1024      5000000       449.0 ns/op      2276.88 MB/s
30
Benchmark32_2048      2000000       894.0 ns/op      2289.87 MB/s
31
Benchmark32_4096      1000000      1792.0 ns/op      2284.64 MB/s
32
Benchmark32_8192       500000      3559.0 ns/op      2301.33 MB/s
33
34
Benchmark128_1       50000000        33.2 ns/op        30.15 MB/s
35
Benchmark128_2       50000000        33.3 ns/op        59.99 MB/s
36
Benchmark128_4       50000000        35.4 ns/op       112.88 MB/s
37
Benchmark128_8       50000000        36.6 ns/op       218.30 MB/s
38
Benchmark128_16      50000000        35.5 ns/op       450.86 MB/s
39
Benchmark128_32      50000000        35.3 ns/op       905.84 MB/s
40
Benchmark128_64      50000000        44.3 ns/op      1443.76 MB/s
41
Benchmark128_128     50000000        58.2 ns/op      2201.02 MB/s
42
Benchmark128_256     20000000        85.3 ns/op      2999.88 MB/s
43
Benchmark128_512     10000000       142.0 ns/op      3592.97 MB/s
44
Benchmark128_1024    10000000       258.0 ns/op      3963.74 MB/s
45
Benchmark128_2048     5000000       494.0 ns/op      4144.65 MB/s
46
Benchmark128_4096     2000000       955.0 ns/op      4285.80 MB/s
47
Benchmark128_8192     1000000      1884.0 ns/op      4347.12 MB/s
48
49
</pre>