| commit | 15613bbf27a61478eb44de76620f33eb7e485776 | [log] [tgz] |
|---|---|---|
| author | Caleb Spare <cespare@gmail.com> | Tue Aug 24 07:27:42 2021 |
| committer | Caleb Spare <cespare@gmail.com> | Tue Aug 24 08:28:07 2021 |
| tree | 29e9bc1ed43179457099f09bbbb8c59df19a205e | |
| parent | 8d433f3eafcbf8d37d12c8968670eb0bfb31089e [diff] |
Remove Travis CI; use GH Actions
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.
This package is in a module and the latest code is in version 2 of the module. You need a version of Go with at least “minimal module compatibility” to use github.com/cespare/xxhash/v2:
I recommend using the latest release of Go.
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'