prometheus/vendor/github.com/cespare/xxhash/v2
Krasi Georgiev 5b8ff9b8a4
Merge the 2.13 release branch (#6169)
* Include tsdb tool in builds (#6085) (#6089)

Add the tsdb tool to promu so that it's included in the release
tarballs.

Signed-off-by: Ben Kochie <superq@gmail.com>

* web/ui: fix for CVE-2019-10215 (#6098)

Signed-off-by: Simon Pasquier <spasquie@redhat.com>

* cut 2.13 release (#6099)

Signed-off-by: Krasi Georgiev <8903888+krasi-georgiev@users.noreply.github.com>

* Fix panic in ARM builds of Prometheus (#6110)

An extra sync.Pool was added during a refactor which caused some 64 bit,
atomically accessed variables to no longer be 64 bit aligned. By moving
all atomically accessed variables to the beginning of the struct they
are guaranteed to be 64 bit aligned.

Signed-off-by: Chris Marchbanks <csmarchbanks@gmail.com>

* promql: fix potential panic in the query logger (#6094)

Signed-off-by: Simon Pasquier <spasquie@redhat.com>

* Cut release 2.13.1 (#6145)

Signed-off-by: Krasi Georgiev <8903888+krasi-georgiev@users.noreply.github.com>
2019-10-18 02:21:58 +03:00
..
.travis.yml Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
go.mod Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
go.sum Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
LICENSE.txt Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
README.md Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
xxhash.go Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
xxhash_amd64.go Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
xxhash_amd64.s Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
xxhash_other.go Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
xxhash_safe.go Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00
xxhash_unsafe.go Merge the 2.13 release branch (#6169) 2019-10-18 02:21:58 +03:00

xxhash

GoDoc Build Status

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.

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