|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- # xxhash
-
- [![Go Reference](https://pkg.go.dev/badge/github.com/cespare/xxhash/v2.svg)](https://pkg.go.dev/github.com/cespare/xxhash/v2)
- [![Test](https://github.com/cespare/xxhash/actions/workflows/test.yml/badge.svg)](https://github.com/cespare/xxhash/actions/workflows/test.yml)
-
- xxhash is a Go implementation of the 64-bit
- [xxHash](http://cyan4973.github.io/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.
-
- ## Compatibility
-
- 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:
-
- * 1.9.7+ for Go 1.9
- * 1.10.3+ for Go 1.10
- * Go 1.11 or later
-
- I recommend using the latest release of Go.
-
- ## Benchmarks
-
- 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'
- ```
-
- ## Projects using this package
-
- - [InfluxDB](https://github.com/influxdata/influxdb)
- - [Prometheus](https://github.com/prometheus/prometheus)
- - [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics)
- - [FreeCache](https://github.com/coocood/freecache)
- - [FastCache](https://github.com/VictoriaMetrics/fastcache)
|