Harlinn.Windows 0.1
Loading...
Searching...
No Matches
XXH3 family
Collaboration diagram for XXH3 family:

Classes

struct  XXH128_hash_t
 The return value from 128-bit hashes. More...
 
struct  XXH128_canonical_t
 

Macros

#define XXH3_SECRET_SIZE_MIN   136
 

Typedefs

typedef struct XXH3_state_s XXH3_state_t
 The state struct for the XXH3 streaming API.
 

Functions

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_tXXH3_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)
 

Detailed Description


XXH3 is a more recent hash algorithm featuring:

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.

Macro Definition Documentation

◆ XXH3_SECRET_SIZE_MIN

#define XXH3_SECRET_SIZE_MIN   136

Typedef Documentation

◆ XXH3_state_t

typedef struct XXH3_state_s XXH3_state_t

The state struct for the XXH3 streaming API.

See also
XXH3_state_s for details.

Function Documentation

◆ XXH128_canonicalFromHash()

XXH_PUBLIC_API void XXH128_canonicalFromHash ( XXH128_canonical_t * dst,
XXH128_hash_t hash )

◆ 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()

XXH_PUBLIC_API XXH128_hash_t XXH128_hashFromCanonical ( const XXH128_canonical_t * src)

◆ XXH128_isEqual()

XXH_PUBLIC_API int XXH128_isEqual ( XXH128_hash_t h1,
XXH128_hash_t h2 )

XXH128_isEqual(): Return: 1 if h1 and h2 are equal, 0 if they are not.

◆ XXH3_128bits()

XXH_PUBLIC_API XXH128_hash_t XXH3_128bits ( const void * data,
size_t len )

◆ XXH3_128bits_digest()

XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest ( const XXH3_state_t * statePtr)

◆ XXH3_128bits_reset()

XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset ( XXH3_state_t * statePtr)

◆ XXH3_128bits_reset_withSecret()

XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSecret ( XXH3_state_t * statePtr,
const void * secret,
size_t secretSize )

◆ XXH3_128bits_reset_withSeed()

XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSeed ( XXH3_state_t * statePtr,
XXH64_hash_t seed )

◆ XXH3_128bits_update()

XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update ( XXH3_state_t * statePtr,
const void * input,
size_t length )

◆ XXH3_128bits_withSecret()

XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSecret ( const void * data,
size_t len,
const void * secret,
size_t secretSize )

◆ XXH3_128bits_withSeed()

XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSeed ( const void * data,
size_t len,
XXH64_hash_t seed )

◆ XXH3_64bits()

XXH_PUBLIC_API XXH64_hash_t XXH3_64bits ( const void * data,
size_t len )

◆ XXH3_64bits_digest()

XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest ( const XXH3_state_t * statePtr)

◆ XXH3_64bits_reset()

XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset ( XXH3_state_t * statePtr)

◆ XXH3_64bits_reset_withSecret()

XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSecret ( XXH3_state_t * statePtr,
const void * secret,
size_t secretSize )

◆ XXH3_64bits_reset_withSeed()

XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSeed ( XXH3_state_t * statePtr,
XXH64_hash_t seed )

◆ XXH3_64bits_update()

XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update ( XXH3_state_t * statePtr,
const void * input,
size_t length )

◆ XXH3_64bits_withSecret()

XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSecret ( const void * data,
size_t len,
const void * secret,
size_t secretSize )

◆ XXH3_64bits_withSeed()

XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSeed ( const void * data,
size_t len,
XXH64_hash_t seed )

◆ XXH3_copyState()

XXH_PUBLIC_API void XXH3_copyState ( XXH3_state_t * dst_state,
const XXH3_state_t * src_state )

◆ XXH3_createState()

XXH_PUBLIC_API XXH3_state_t * XXH3_createState ( void )

◆ XXH3_freeState()

XXH_PUBLIC_API XXH_errorcode XXH3_freeState ( XXH3_state_t * statePtr)