tag | 31de4ebecdd30cfd37dbd7915da2b2e3ac06f400 | |
---|---|---|
tagger | Caleb Spare <cespare@gmail.com> | Fri Jan 04 01:27:39 2019 |
object | 3b82fb7d186719faeedd0c2864f868c74fbf79a1 |
Release v2.0.0
commit | 3b82fb7d186719faeedd0c2864f868c74fbf79a1 | [log] [tgz] |
---|---|---|
author | Caleb Spare <cespare@gmail.com> | Fri Jan 04 01:26:12 2019 |
committer | Caleb Spare <cespare@gmail.com> | Fri Jan 04 01:26:19 2019 |
tree | e49484d2c69ecc2dd1401f9ca2ce6988f9d261a9 | |
parent | 30d0e5bcb75d96ed4140aa9fdd4a3df79f60747e [diff] |
Update module/import paths for v2
xxhash is a Go implementation of the 64-bit xxHash algorithm, XXH64. This is a high-quality hashing algorithm that is much faster than anything in the Go standard library.
This package provides a straightforward API:
func Sum64(b []byte) uint64 func Sum64String(s string) uint64 type Digest struct{ ... } func New() *Digest
The Digest
type implements hash.Hash64. Its key methods are:
func (*Digest) Write([]byte) (int, error) func (*Digest) WriteString(string) (int, error) func (*Digest) Sum64() uint64
This implementation provides a fast pure-Go implementation and an even faster assembly implementation for amd64.
Here are some quick benchmarks comparing the pure-Go and assembly implementations of Sum64.
input size | purego | asm |
---|---|---|
5 B | 979.66 MB/s | 1291.17 MB/s |
100 B | 7475.26 MB/s | 7973.40 MB/s |
4 KB | 17573.46 MB/s | 17602.65 MB/s |
10 MB | 17131.46 MB/s | 17142.16 MB/s |
These numbers were generated on Ubuntu 18.04 with an Intel i7-8700K CPU using the following commands under Go 1.11.2:
$ go test -tags purego -benchtime 10s -bench '/xxhash,direct,bytes' $ go test -benchtime 10s -bench '/xxhash,direct,bytes'