12a1f914f4
* update github.com/alecthomas/chroma v0.8.0 -> v0.8.1 * github.com/blevesearch/bleve v1.0.10 -> v1.0.12 * editorconfig-core-go v2.1.1 -> v2.3.7 * github.com/gliderlabs/ssh v0.2.2 -> v0.3.1 * migrate editorconfig.ParseBytes to Parse * github.com/shurcooL/vfsgen to 0d455de96546 * github.com/go-git/go-git/v5 v5.1.0 -> v5.2.0 * github.com/google/uuid v1.1.1 -> v1.1.2 * github.com/huandu/xstrings v1.3.0 -> v1.3.2 * github.com/klauspost/compress v1.10.11 -> v1.11.1 * github.com/markbates/goth v1.61.2 -> v1.65.0 * github.com/mattn/go-sqlite3 v1.14.0 -> v1.14.4 * github.com/mholt/archiver v3.3.0 -> v3.3.2 * github.com/microcosm-cc/bluemonday 4f7140c49acb -> v1.0.4 * github.com/minio/minio-go v7.0.4 -> v7.0.5 * github.com/olivere/elastic v7.0.9 -> v7.0.20 * github.com/urfave/cli v1.20.0 -> v1.22.4 * github.com/prometheus/client_golang v1.1.0 -> v1.8.0 * github.com/xanzy/go-gitlab v0.37.0 -> v0.38.1 * mvdan.cc/xurls v2.1.0 -> v2.2.0 Co-authored-by: Lauris BH <lauris@nix.lv>
68 lines
2.0 KiB
Markdown
Vendored
68 lines
2.0 KiB
Markdown
Vendored
# xxhash
|
|
|
|
[![GoDoc](https://godoc.org/github.com/cespare/xxhash?status.svg)](https://godoc.org/github.com/cespare/xxhash)
|
|
[![Build Status](https://travis-ci.org/cespare/xxhash.svg?branch=master)](https://travis-ci.org/cespare/xxhash)
|
|
|
|
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)
|
|
- [FreeCache](https://github.com/coocood/freecache)
|