]> Cypherpunks repositories - gostls13.git/commit
hash/fnv: use bits.Mul64 for 128-bit hash
authorBrian Kessler <brian.m.kessler@gmail.com>
Thu, 6 Sep 2018 18:26:31 +0000 (12:26 -0600)
committerRobert Griesemer <gri@golang.org>
Mon, 10 Dec 2018 22:50:48 +0000 (22:50 +0000)
commit1ccb66d1ef031ad70345d2ef1983a5814f405295
treef679ff2649264764b3984c9e20d2ad77349783db
parentba69df63ebbf9101a35fb11a0df1e1912d285da4
hash/fnv: use bits.Mul64 for 128-bit hash

Replace the 128-bit multiplication in 4 parts with bits.Mul64
and two single-width multiplications.  This simplifies the code
and increases throughput by ~50% on amd64.

name         old time/op   new time/op   delta
Fnv128KB-4    9.64µs ± 0%   6.09µs ± 0%  -36.89%  (p=0.016 n=4+5)
Fnv128aKB-4   9.11µs ± 0%   6.17µs ± 5%  -32.32%  (p=0.008 n=5+5)

name         old speed     new speed     delta
Fnv128KB-4   106MB/s ± 0%  168MB/s ± 0%  +58.44%  (p=0.016 n=4+5)
Fnv128aKB-4  112MB/s ± 0%  166MB/s ± 5%  +47.85%  (p=0.008 n=5+5)

Change-Id: Id752f2a20ea3de23a41e08db89eecf2bb60b7e6d
Reviewed-on: https://go-review.googlesource.com/c/133936
Run-TryBot: Matt Layher <mdlayher@gmail.com>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matt Layher <mdlayher@gmail.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
src/hash/fnv/fnv.go