|
typedef struct XXH3_state_s | XXH3_state_t |
| The state struct for the XXH3 streaming API.
|
|
|
XXH_PUBLIC_API XXH64_hash_t | XXH3_64bits (const void *data, size_t len) |
|
XXH_PUBLIC_API XXH64_hash_t | XXH3_64bits_withSeed (const void *data, size_t len, XXH64_hash_t seed) |
|
XXH_PUBLIC_API XXH64_hash_t | XXH3_64bits_withSecret (const void *data, size_t len, const void *secret, size_t secretSize) |
|
XXH_PUBLIC_API XXH3_state_t * | XXH3_createState (void) |
|
XXH_PUBLIC_API XXH_errorcode | XXH3_freeState (XXH3_state_t *statePtr) |
|
XXH_PUBLIC_API void | XXH3_copyState (XXH3_state_t *dst_state, const XXH3_state_t *src_state) |
|
XXH_PUBLIC_API XXH_errorcode | XXH3_64bits_reset (XXH3_state_t *statePtr) |
|
XXH_PUBLIC_API XXH_errorcode | XXH3_64bits_reset_withSeed (XXH3_state_t *statePtr, XXH64_hash_t seed) |
|
XXH_PUBLIC_API XXH_errorcode | XXH3_64bits_reset_withSecret (XXH3_state_t *statePtr, const void *secret, size_t secretSize) |
|
XXH_PUBLIC_API XXH_errorcode | XXH3_64bits_update (XXH3_state_t *statePtr, const void *input, size_t length) |
|
XXH_PUBLIC_API XXH64_hash_t | XXH3_64bits_digest (const XXH3_state_t *statePtr) |
|
XXH_PUBLIC_API XXH128_hash_t | XXH3_128bits (const void *data, size_t len) |
|
XXH_PUBLIC_API XXH128_hash_t | XXH3_128bits_withSeed (const void *data, size_t len, XXH64_hash_t seed) |
|
XXH_PUBLIC_API XXH128_hash_t | XXH3_128bits_withSecret (const void *data, size_t len, const void *secret, size_t secretSize) |
|
XXH_PUBLIC_API XXH_errorcode | XXH3_128bits_reset (XXH3_state_t *statePtr) |
|
XXH_PUBLIC_API XXH_errorcode | XXH3_128bits_reset_withSeed (XXH3_state_t *statePtr, XXH64_hash_t seed) |
|
XXH_PUBLIC_API XXH_errorcode | XXH3_128bits_reset_withSecret (XXH3_state_t *statePtr, const void *secret, size_t secretSize) |
|
XXH_PUBLIC_API XXH_errorcode | XXH3_128bits_update (XXH3_state_t *statePtr, const void *input, size_t length) |
|
XXH_PUBLIC_API XXH128_hash_t | XXH3_128bits_digest (const XXH3_state_t *statePtr) |
|
XXH_PUBLIC_API int | XXH128_isEqual (XXH128_hash_t h1, XXH128_hash_t h2) |
|
XXH_PUBLIC_API int | XXH128_cmp (const void *h128_1, const void *h128_2) |
|
XXH_PUBLIC_API void | XXH128_canonicalFromHash (XXH128_canonical_t *dst, XXH128_hash_t hash) |
|
XXH_PUBLIC_API XXH128_hash_t | XXH128_hashFromCanonical (const XXH128_canonical_t *src) |
|
XXH3 is a more recent hash algorithm featuring:
- Improved speed for both small and large inputs
- True 64-bit and 128-bit outputs
- SIMD acceleration
- Improved 32-bit viability
Speed analysis methodology is explained here:
https://fastcompression.blogspot.com/2019/03/presenting-xxh3.html
Compared to XXH64, expect XXH3 to run approximately ~2x faster on large inputs and >3x faster on small ones, exact differences vary depending on platform.
XXH3's speed benefits greatly from SIMD and 64-bit arithmetic, but does not require it. Any 32-bit and 64-bit targets that can run XXH32 smoothly can run XXH3 at competitive speeds, even without vector support. Further details are explained in the implementation.
Optimized implementations are provided for AVX512, AVX2, SSE2, NEON, POWER8, ZVector and scalar targets. This can be controlled via the XXH_VECTOR macro.
XXH3 implementation is portable: it has a generic C90 formulation that can be compiled on any platform, all implementations generage exactly the same hash value on all platforms. Starting from v0.8.0, it's also labelled "stable", meaning that any future version will also generate the same hash value.
XXH3 offers 2 variants, _64bits and _128bits.
When only 64 bits are needed, prefer invoking the _64bits variant, as it reduces the amount of mixing, resulting in faster speed on small inputs. It's also generally simpler to manipulate a scalar return type than a struct.
The API supports one-shot hashing, streaming mode, and custom secrets.
◆ XXH3_SECRET_SIZE_MIN
#define XXH3_SECRET_SIZE_MIN 136 |
◆ XXH3_state_t
The state struct for the XXH3 streaming API.
- See also
- XXH3_state_s for details.
◆ XXH128_canonicalFromHash()
◆ XXH128_cmp()
XXH_PUBLIC_API int XXH128_cmp |
( |
const void * | h128_1, |
|
|
const void * | h128_2 ) |
XXH128_cmp():
This comparator is compatible with stdlib's qsort()
/bsearch()
.
return: >0 if *h128_1 > *h128_2 =0 if *h128_1 == *h128_2 <0 if *h128_1 < *h128_2
◆ XXH128_hashFromCanonical()
◆ XXH128_isEqual()
◆ XXH3_128bits()
◆ XXH3_128bits_digest()
◆ XXH3_128bits_reset()
◆ XXH3_128bits_reset_withSecret()
◆ XXH3_128bits_reset_withSeed()
◆ XXH3_128bits_update()
◆ XXH3_128bits_withSecret()
◆ XXH3_128bits_withSeed()
◆ XXH3_64bits()
◆ XXH3_64bits_digest()
◆ XXH3_64bits_reset()
◆ XXH3_64bits_reset_withSecret()
◆ XXH3_64bits_reset_withSeed()
◆ XXH3_64bits_update()
◆ XXH3_64bits_withSecret()
◆ XXH3_64bits_withSeed()
◆ XXH3_copyState()
◆ XXH3_createState()
◆ XXH3_freeState()