NAME Crypt::xxHash - xxHash implementation for Perl SYNOPSIS use Crypt::xxHash qw/ xxhash32 xxhash32_hex xxhash64 xxhash64_hex xxhash3_64bits xxhash3_64bits_hex xxhash3_128bits_hex /; my $hash = xxhash32( $data, $seed ); my $hex = xxhash32_hex( $data, $seed ); my $hash_64 = xxhash64( $data, $seed ); my $hex_64 = xxhash64_hex( $data, $seed ); my $hash_64 = xxhash3_64bits( $data, $seed ); my $hex_64 = xxhash3_64bits_hex( $data, $seed ); my $hex_128 = xxhash3_128bits_hex( $data, $seed ); DESCRIPTION xxHash is a super fast algorithm that claims to work at speeds close to RAM limits. This package provides 32- and 64-bit hash functions. As bonus it provides 128-bit hex method. This package was inspired by Digest::xxHash, but it includes the fresh C code and has some optimisations. Thus all hex methods are implemented in Perl XS. Also this module doesn't use Math::Int64 in favor of native 64 bit digits. The used version of xxHash is v0.8.0 $h = xxhash32( $data, $seed ) Returns a 32 bit hash. $h = xxhash32_hex( $data, $seed ) Returns a 32 bit hash converted into hex string. $h = xxhash64( $data, $seed ) Returns a 64 bit hash. $h = xxhash64_hex( $data, $seed ) Returns a 64 bit hash converted into hex string $h = xxhash3_64bits( $data, $seed ) Returns a 64 bit hash which calculated by using xxHash3 algorithm. $h = xxhash3_64bits_hex( $data, $seed ) Returns a 64 bit hash which calculated by using xxHash3 algorithm. This hash is converted into hex string. $h = xxhash3_128its_hex( $data, $seed ) Returns a 128 bit hash which calculated by using xxHash3 algorithm. This hash is converted into hex string. $stream = xxhash3_64bits_stream($seed) =head2 xxhash3_64bits_stream_update($stream, $more_data) =head2 $h = xxhash3_64bits_stream_digest($stream) =head2 $h = xxhash3_64bits_stream_digest_hex($stream) Get a 64 bit hash from segmented data by calling xxhash3_64bits_stream_update multiple times. sub hash_a_file { my($fh) = @_; my $stream = xxhash3_64bits_stream(12345); my $buf; while( read $fh, $buf, 1024 ) { xxhash3_64bits_stream_update($stream, $buf); } return xxhash3_64bits_stream_digest($stream); # return xxhash3_64bits_stream_digest_hex($stream); # hex version } # the resources $stream occupied will be released here. SPEED There are some official benchmark results can be found on the project web-site https://github.com/Cyan4973/xxHash BENCHMARKS Below you can find some benchmarks in comparison with Digest::xxHash. The "xxhash32" methods in those two packages have the same realisation. so they have the same throughput capacity. But other methods have some differences: Rate Digest::xxHash::xxhash32_hex Crypt::xxHash::xxhash32_hex Digest::xxHash::xxhash32_hex 2577320/s -- -54% Crypt::xxHash::xxhash32_hex 5543237/s 115% -- Rate Digest::xxHash::xxhash64 Crypt::xxHash::xxhash64 Digest::xxHash::xxhash64 201729/s -- -99% Crypt::xxHash::xxhash64 14893617/s 7283% -- Rate Digest::xxHash::xxhash64_hex Crypt::xxHash::xxhash64_hex Digest::xxHash::xxhash64_hex 185048/s -- -96% Crypt::xxHash::xxhash64_hex 4926108/s 2562% -- LICENSE xxHash is covered by the BSD license. AUTHOR Chernenko Dmitiry cdn@cpan.org xxHash by Yann Collet.