From 6d12dc92f625728bfce981549d0fffcacaec7278 Mon Sep 17 00:00:00 2001 From: Reini Urban Date: Sat, 7 Mar 2020 21:19:29 +0100 Subject: [PATCH] rename doc/* to doc/*.txt needed for table.html See GH #81 --- .gitignore | 11 + README.md | 300 +++---- checkdoctests.pl | 4 +- doc/{BEBB4185 => BEBB4185.txt} | 0 doc/{BadHash => BadHash.txt} | 0 doc/{City128 => City128.txt} | 0 doc/{City32 => City32.txt} | 0 doc/{City64 => City64.txt} | 0 doc/{City64low => City64low.txt} | 0 doc/{City64noSeed => City64noSeed.txt} | 0 doc/{CityCrc128 => CityCrc128.txt} | 0 doc/{Crap8 => Crap8.txt} | 0 ...1A_Pippip_Yurii => FNV1A_Pippip_Yurii.txt} | 0 ...NV1A_Totenschiff => FNV1A_Totenschiff.txt} | 0 doc/{FNV1a => FNV1a.txt} | 0 doc/{FNV1a_YT => FNV1a_YT.txt} | 0 doc/{FNV2 => FNV2.txt} | 0 doc/{FNV64 => FNV64.txt} | 0 doc/{FarmHash128 => FarmHash128.txt} | 0 doc/{FarmHash32 => FarmHash32.txt} | 0 doc/{FarmHash64 => FarmHash64.txt} | 0 doc/FastestHash.txt | 781 ++++++++++++++++++ doc/{GoodOAAT => GoodOAAT.txt} | 0 doc/{HalfSipHash => HalfSipHash.txt} | 0 doc/{HighwayHash64 => HighwayHash64.txt} | 0 doc/{JenkinsOOAT => JenkinsOOAT.txt} | 0 ...{JenkinsOOAT_perl => JenkinsOOAT_perl.txt} | 0 doc/{MUM => MUM.txt} | 0 doc/{MUMlow => MUMlow.txt} | 0 doc/{MeowHash => MeowHash.txt} | 0 doc/{MeowHash32low => MeowHash32low.txt} | 0 doc/{MicroOAAT => MicroOAAT.txt} | 0 doc/{Murmur2 => Murmur2.txt} | 0 doc/{Murmur2A => Murmur2A.txt} | 0 doc/{Murmur2B => Murmur2B.txt} | 0 doc/{Murmur2C => Murmur2C.txt} | 0 doc/{Murmur3A => Murmur3A.txt} | 0 doc/{Murmur3C => Murmur3C.txt} | 0 doc/{Murmur3F => Murmur3F.txt} | 0 doc/{MurmurOAAT => MurmurOAAT.txt} | 0 doc/{NOP_OAAT_read64 => NOP_OAAT_read64.txt} | 0 doc/{PMPML_32 => PMPML_32.txt} | 0 doc/{PMPML_64 => PMPML_64.txt} | 0 doc/{PMurHash32 => PMurHash32.txt} | 0 doc/{SipHash => SipHash.txt} | 0 doc/{SipHash13 => SipHash13.txt} | 0 doc/{Spooky128 => Spooky128.txt} | 0 doc/{Spooky32 => Spooky32.txt} | 0 doc/{Spooky64 => Spooky64.txt} | 0 doc/{TSip => TSip.txt} | 0 doc/{VHASH_32 => VHASH_32.txt} | 0 doc/{VHASH_64 => VHASH_64.txt} | 0 doc/{aesnihash => aesnihash.txt} | 0 doc/{beamsplitter => beamsplitter.txt} | 0 doc/{bernstein => bernstein.txt} | 0 doc/{blake2b-160 => blake2b-160.txt} | 0 doc/{blake2b-224 => blake2b-224.txt} | 0 doc/{blake2b-256 => blake2b-256.txt} | 0 doc/{blake2b-256_64 => blake2b-256_64.txt} | 0 doc/{blake2s-128 => blake2s-128.txt} | 0 doc/{blake2s-160 => blake2s-160.txt} | 0 doc/{blake2s-224 => blake2s-224.txt} | 0 doc/{blake2s-256 => blake2s-256.txt} | 0 doc/{blake2s-256_64 => blake2s-256_64.txt} | 0 doc/{blake3_c => blake3_c.txt} | 0 doc/{chaskey => chaskey.txt} | 0 doc/{clhash => clhash.txt} | 0 doc/{cmetrohash64_1 => cmetrohash64_1.txt} | 0 doc/{cmetrohash64_1o => cmetrohash64_1o.txt} | 0 doc/{cmetrohash64_2 => cmetrohash64_2.txt} | 0 doc/{crc32 => crc32.txt} | 0 doc/{crc32_hw => crc32_hw.txt} | 0 doc/{crc32_hw1 => crc32_hw1.txt} | 0 doc/{crc32_pclmul => crc32_pclmul.txt} | 0 doc/{crc64_hw => crc64_hw.txt} | 0 doc/{crcutil => crcutil.txt} | 0 doc/{donothing128 => donothing128.txt} | 0 doc/{donothing32 => donothing32.txt} | 0 doc/{donothing64 => donothing64.txt} | 0 doc/{falkhash => falkhash.txt} | 0 doc/{farmhash128_c => farmhash128_c.txt} | 0 doc/{farmhash32_c => farmhash32_c.txt} | 0 doc/{farmhash64_c => farmhash64_c.txt} | 0 doc/farsh128.txt | 63 ++ doc/farsh256.txt | 63 ++ doc/{farsh32 => farsh32.txt} | 0 doc/{farsh64 => farsh64.txt} | 0 doc/{fasthash32 => fasthash32.txt} | 0 doc/{fasthash64 => fasthash64.txt} | 0 doc/{fibonacci => fibonacci.txt} | 0 doc/{fletcher2 => fletcher2.txt} | 0 doc/{fletcher4 => fletcher4.txt} | 0 doc/{floppsyhash => floppsyhash.txt} | 0 doc/{hasshe2 => hasshe2.txt} | 0 doc/{jodyhash32 => jodyhash32.txt} | 0 doc/{jodyhash64 => jodyhash64.txt} | 0 doc/{lookup3 => lookup3.txt} | 0 doc/{md5-128 => md5-128.txt} | 0 doc/{md5_32a => md5_32a.txt} | 0 doc/{metrohash128 => metrohash128.txt} | 0 doc/{metrohash128_1 => metrohash128_1.txt} | 0 doc/{metrohash128_2 => metrohash128_2.txt} | 0 ...etrohash128crc_1 => metrohash128crc_1.txt} | 0 ...etrohash128crc_2 => metrohash128crc_2.txt} | 0 doc/{metrohash64 => metrohash64.txt} | 0 doc/{metrohash64_1 => metrohash64_1.txt} | 0 doc/{metrohash64_2 => metrohash64_2.txt} | 0 ...{metrohash64crc_1 => metrohash64crc_1.txt} | 0 ...{metrohash64crc_2 => metrohash64crc_2.txt} | 0 doc/{mirhash => mirhash.txt} | 0 doc/{mirhash32low => mirhash32low.txt} | 0 doc/{mirhashstrict => mirhashstrict.txt} | 0 ...hashstrict32low => mirhashstrict32low.txt} | 0 doc/{multiply_shift => multiply_shift.txt} | 0 ...multiply_shift => pair_multiply_shift.txt} | 0 doc/{rmd128 => rmd128.txt} | 0 doc/{rmd160 => rmd160.txt} | 0 doc/{rmd256 => rmd256.txt} | 0 doc/{sdbm => sdbm.txt} | 0 doc/{seahash => seahash.txt} | 0 doc/{seahash32low => seahash32low.txt} | 0 doc/{sha1-160 => sha1-160.txt} | 0 doc/{sha1_32a => sha1_32a.txt} | 0 doc/{sha1ni => sha1ni.txt} | 0 doc/{sha1ni_32 => sha1ni_32.txt} | 0 doc/{sha2-224 => sha2-224.txt} | 0 doc/{sha2-224_64 => sha2-224_64.txt} | 0 doc/{sha2-256 => sha2-256.txt} | 0 doc/{sha2-256_64 => sha2-256_64.txt} | 0 doc/{sha2ni-256 => sha2ni-256.txt} | 0 doc/{sha2ni-256_64 => sha2ni-256_64.txt} | 0 doc/{sha3-256 => sha3-256.txt} | 0 doc/{sha3-256_64 => sha3-256_64.txt} | 0 doc/{sumhash => sumhash.txt} | 0 doc/{sumhash32 => sumhash32.txt} | 0 doc/{superfast => superfast.txt} | 0 doc/{t1ha0_32be => t1ha0_32be.txt} | 0 doc/{t1ha0_32le => t1ha0_32le.txt} | 0 doc/{t1ha0_aes_avx1 => t1ha0_aes_avx1.txt} | 0 doc/{t1ha0_aes_avx2 => t1ha0_aes_avx2.txt} | 0 doc/{t1ha0_aes_noavx => t1ha0_aes_noavx.txt} | 0 doc/{t1ha1_64be => t1ha1_64be.txt} | 0 doc/{t1ha1_64le => t1ha1_64le.txt} | 0 doc/{t1ha2_atonce => t1ha2_atonce.txt} | 0 doc/{t1ha2_atonce128 => t1ha2_atonce128.txt} | 0 doc/{t1ha2_stream => t1ha2_stream.txt} | 0 doc/{t1ha2_stream128 => t1ha2_stream128.txt} | 0 doc/table.html | 302 +++---- doc/{tifuhash_64 => tifuhash_64.txt} | 0 doc/{wyhash => wyhash.txt} | 0 doc/{wyhash32low => wyhash32low.txt} | 0 doc/{x17 => x17.txt} | 0 doc/{xxHash32 => xxHash32.txt} | 0 doc/{xxHash64 => xxHash64.txt} | 0 doc/{xxh128 => xxh128.txt} | 0 doc/{xxh128low => xxh128low.txt} | 0 doc/{xxh3 => xxh3.txt} | 0 doc/{xxh3low => xxh3low.txt} | 0 fixupdocspeeds.pl | 6 +- fixupdoctests.pl | 10 +- speed.sh | 2 +- split.pl | 2 +- testall.sh | 2 +- testextra.sh | 2 +- testgood-but-poor.sh | 6 +- testpar-good.sh | 2 +- testpoor-but-good.sh | 4 +- 167 files changed, 1239 insertions(+), 321 deletions(-) rename doc/{BEBB4185 => BEBB4185.txt} (100%) rename doc/{BadHash => BadHash.txt} (100%) rename doc/{City128 => City128.txt} (100%) rename doc/{City32 => City32.txt} (100%) rename doc/{City64 => City64.txt} (100%) rename doc/{City64low => City64low.txt} (100%) rename doc/{City64noSeed => City64noSeed.txt} (100%) rename doc/{CityCrc128 => CityCrc128.txt} (100%) rename doc/{Crap8 => Crap8.txt} (100%) rename doc/{FNV1A_Pippip_Yurii => FNV1A_Pippip_Yurii.txt} (100%) rename doc/{FNV1A_Totenschiff => FNV1A_Totenschiff.txt} (100%) rename doc/{FNV1a => FNV1a.txt} (100%) rename doc/{FNV1a_YT => FNV1a_YT.txt} (100%) rename doc/{FNV2 => FNV2.txt} (100%) rename doc/{FNV64 => FNV64.txt} (100%) rename doc/{FarmHash128 => FarmHash128.txt} (100%) rename doc/{FarmHash32 => FarmHash32.txt} (100%) rename doc/{FarmHash64 => FarmHash64.txt} (100%) create mode 100644 doc/FastestHash.txt rename doc/{GoodOAAT => GoodOAAT.txt} (100%) rename doc/{HalfSipHash => HalfSipHash.txt} (100%) rename doc/{HighwayHash64 => HighwayHash64.txt} (100%) rename doc/{JenkinsOOAT => JenkinsOOAT.txt} (100%) rename doc/{JenkinsOOAT_perl => JenkinsOOAT_perl.txt} (100%) rename doc/{MUM => MUM.txt} (100%) rename doc/{MUMlow => MUMlow.txt} (100%) rename doc/{MeowHash => MeowHash.txt} (100%) rename doc/{MeowHash32low => MeowHash32low.txt} (100%) rename doc/{MicroOAAT => MicroOAAT.txt} (100%) rename doc/{Murmur2 => Murmur2.txt} (100%) rename doc/{Murmur2A => Murmur2A.txt} (100%) rename doc/{Murmur2B => Murmur2B.txt} (100%) rename doc/{Murmur2C => Murmur2C.txt} (100%) rename doc/{Murmur3A => Murmur3A.txt} (100%) rename doc/{Murmur3C => Murmur3C.txt} (100%) rename doc/{Murmur3F => Murmur3F.txt} (100%) rename doc/{MurmurOAAT => MurmurOAAT.txt} (100%) rename doc/{NOP_OAAT_read64 => NOP_OAAT_read64.txt} (100%) rename doc/{PMPML_32 => PMPML_32.txt} (100%) rename doc/{PMPML_64 => PMPML_64.txt} (100%) rename doc/{PMurHash32 => PMurHash32.txt} (100%) rename doc/{SipHash => SipHash.txt} (100%) rename doc/{SipHash13 => SipHash13.txt} (100%) rename doc/{Spooky128 => Spooky128.txt} (100%) rename doc/{Spooky32 => Spooky32.txt} (100%) rename doc/{Spooky64 => Spooky64.txt} (100%) rename doc/{TSip => TSip.txt} (100%) rename doc/{VHASH_32 => VHASH_32.txt} (100%) rename doc/{VHASH_64 => VHASH_64.txt} (100%) rename doc/{aesnihash => aesnihash.txt} (100%) rename doc/{beamsplitter => beamsplitter.txt} (100%) rename doc/{bernstein => bernstein.txt} (100%) rename doc/{blake2b-160 => blake2b-160.txt} (100%) rename doc/{blake2b-224 => blake2b-224.txt} (100%) rename doc/{blake2b-256 => blake2b-256.txt} (100%) rename doc/{blake2b-256_64 => blake2b-256_64.txt} (100%) rename doc/{blake2s-128 => blake2s-128.txt} (100%) rename doc/{blake2s-160 => blake2s-160.txt} (100%) rename doc/{blake2s-224 => blake2s-224.txt} (100%) rename doc/{blake2s-256 => blake2s-256.txt} (100%) rename doc/{blake2s-256_64 => blake2s-256_64.txt} (100%) rename doc/{blake3_c => blake3_c.txt} (100%) rename doc/{chaskey => chaskey.txt} (100%) rename doc/{clhash => clhash.txt} (100%) rename doc/{cmetrohash64_1 => cmetrohash64_1.txt} (100%) rename doc/{cmetrohash64_1o => cmetrohash64_1o.txt} (100%) rename doc/{cmetrohash64_2 => cmetrohash64_2.txt} (100%) rename doc/{crc32 => crc32.txt} (100%) rename doc/{crc32_hw => crc32_hw.txt} (100%) rename doc/{crc32_hw1 => crc32_hw1.txt} (100%) rename doc/{crc32_pclmul => crc32_pclmul.txt} (100%) rename doc/{crc64_hw => crc64_hw.txt} (100%) rename doc/{crcutil => crcutil.txt} (100%) rename doc/{donothing128 => donothing128.txt} (100%) rename doc/{donothing32 => donothing32.txt} (100%) rename doc/{donothing64 => donothing64.txt} (100%) rename doc/{falkhash => falkhash.txt} (100%) rename doc/{farmhash128_c => farmhash128_c.txt} (100%) rename doc/{farmhash32_c => farmhash32_c.txt} (100%) rename doc/{farmhash64_c => farmhash64_c.txt} (100%) create mode 100644 doc/farsh128.txt create mode 100644 doc/farsh256.txt rename doc/{farsh32 => farsh32.txt} (100%) rename doc/{farsh64 => farsh64.txt} (100%) rename doc/{fasthash32 => fasthash32.txt} (100%) rename doc/{fasthash64 => fasthash64.txt} (100%) rename doc/{fibonacci => fibonacci.txt} (100%) rename doc/{fletcher2 => fletcher2.txt} (100%) rename doc/{fletcher4 => fletcher4.txt} (100%) rename doc/{floppsyhash => floppsyhash.txt} (100%) rename doc/{hasshe2 => hasshe2.txt} (100%) rename doc/{jodyhash32 => jodyhash32.txt} (100%) rename doc/{jodyhash64 => jodyhash64.txt} (100%) rename doc/{lookup3 => lookup3.txt} (100%) rename doc/{md5-128 => md5-128.txt} (100%) rename doc/{md5_32a => md5_32a.txt} (100%) rename doc/{metrohash128 => metrohash128.txt} (100%) rename doc/{metrohash128_1 => metrohash128_1.txt} (100%) rename doc/{metrohash128_2 => metrohash128_2.txt} (100%) rename doc/{metrohash128crc_1 => metrohash128crc_1.txt} (100%) rename doc/{metrohash128crc_2 => metrohash128crc_2.txt} (100%) rename doc/{metrohash64 => metrohash64.txt} (100%) rename doc/{metrohash64_1 => metrohash64_1.txt} (100%) rename doc/{metrohash64_2 => metrohash64_2.txt} (100%) rename doc/{metrohash64crc_1 => metrohash64crc_1.txt} (100%) rename doc/{metrohash64crc_2 => metrohash64crc_2.txt} (100%) rename doc/{mirhash => mirhash.txt} (100%) rename doc/{mirhash32low => mirhash32low.txt} (100%) rename doc/{mirhashstrict => mirhashstrict.txt} (100%) rename doc/{mirhashstrict32low => mirhashstrict32low.txt} (100%) rename doc/{multiply_shift => multiply_shift.txt} (100%) rename doc/{pair_multiply_shift => pair_multiply_shift.txt} (100%) rename doc/{rmd128 => rmd128.txt} (100%) rename doc/{rmd160 => rmd160.txt} (100%) rename doc/{rmd256 => rmd256.txt} (100%) rename doc/{sdbm => sdbm.txt} (100%) rename doc/{seahash => seahash.txt} (100%) rename doc/{seahash32low => seahash32low.txt} (100%) rename doc/{sha1-160 => sha1-160.txt} (100%) rename doc/{sha1_32a => sha1_32a.txt} (100%) rename doc/{sha1ni => sha1ni.txt} (100%) rename doc/{sha1ni_32 => sha1ni_32.txt} (100%) rename doc/{sha2-224 => sha2-224.txt} (100%) rename doc/{sha2-224_64 => sha2-224_64.txt} (100%) rename doc/{sha2-256 => sha2-256.txt} (100%) rename doc/{sha2-256_64 => sha2-256_64.txt} (100%) rename doc/{sha2ni-256 => sha2ni-256.txt} (100%) rename doc/{sha2ni-256_64 => sha2ni-256_64.txt} (100%) rename doc/{sha3-256 => sha3-256.txt} (100%) rename doc/{sha3-256_64 => sha3-256_64.txt} (100%) rename doc/{sumhash => sumhash.txt} (100%) rename doc/{sumhash32 => sumhash32.txt} (100%) rename doc/{superfast => superfast.txt} (100%) rename doc/{t1ha0_32be => t1ha0_32be.txt} (100%) rename doc/{t1ha0_32le => t1ha0_32le.txt} (100%) rename doc/{t1ha0_aes_avx1 => t1ha0_aes_avx1.txt} (100%) rename doc/{t1ha0_aes_avx2 => t1ha0_aes_avx2.txt} (100%) rename doc/{t1ha0_aes_noavx => t1ha0_aes_noavx.txt} (100%) rename doc/{t1ha1_64be => t1ha1_64be.txt} (100%) rename doc/{t1ha1_64le => t1ha1_64le.txt} (100%) rename doc/{t1ha2_atonce => t1ha2_atonce.txt} (100%) rename doc/{t1ha2_atonce128 => t1ha2_atonce128.txt} (100%) rename doc/{t1ha2_stream => t1ha2_stream.txt} (100%) rename doc/{t1ha2_stream128 => t1ha2_stream128.txt} (100%) rename doc/{tifuhash_64 => tifuhash_64.txt} (100%) rename doc/{wyhash => wyhash.txt} (100%) rename doc/{wyhash32low => wyhash32low.txt} (100%) rename doc/{x17 => x17.txt} (100%) rename doc/{xxHash32 => xxHash32.txt} (100%) rename doc/{xxHash64 => xxHash64.txt} (100%) rename doc/{xxh128 => xxh128.txt} (100%) rename doc/{xxh128low => xxh128low.txt} (100%) rename doc/{xxh3 => xxh3.txt} (100%) rename doc/{xxh3low => xxh3low.txt} (100%) diff --git a/.gitignore b/.gitignore index 57263970..5d5e4947 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,17 @@ fsbench-density/ prof.h /zlib/ /clhash/ +/PowerHash/ +.gdbinit # Apple artefact .DS_Store + +/blake3/Makefile +/blake3/blake3_avx2.o +/blake3/blake3_avx512.o +/blake3/blake3_sse41.o +/blake3/libblake3.a +/blake3/main.c +/blake3/test.py +/blake3/test_vectors.json diff --git a/README.md b/README.md index b9ff1980..e75b4914 100644 --- a/README.md +++ b/README.md @@ -5,159 +5,159 @@ SMhasher | Hash function | MiB/sec |cycl./hash|cycl./map | size| Quality problems | |:----------------------------------------------|-------------:|---------:|-----------:|----:|--------------------------------| -| [donothing32](doc/donothing32) | 14924689.47 | 6.00 | - | 13 | test NOP | -| [donothing64](doc/donothing64) | 14942317.78 | 6.00 | - | 13 | test NOP | -| [donothing128](doc/donothing128) | 14943678.61 | 6.00 | - | 13 | test NOP | -| [NOP_OAAT_read64](doc/NOP_OAAT_read64) | 29794.83 | 35.50 | - | 47 | test NOP | -| [BadHash](doc/BadHash) | 522.75 | 96.39 | - | 47 | test FAIL | -| [sumhash](doc/sumhash) | 7135.41 | 31.14 | - | 363 | test FAIL | -| [sumhash32](doc/sumhash32) | 23873.87 | 22.49 | - | 863 | test FAIL | -| [multiply_shift](doc/multiply_shift) | 4909.57 | 45.28 | too slow | 345 | fails all tests | +| [donothing32](doc/donothing32.txt) | 14924689.47 | 6.00 | - | 13 | test NOP | +| [donothing64](doc/donothing64.txt) | 14942317.78 | 6.00 | - | 13 | test NOP | +| [donothing128](doc/donothing128.txt) | 14943678.61 | 6.00 | - | 13 | test NOP | +| [NOP_OAAT_read64](doc/NOP_OAAT_read64.txt) | 29794.83 | 35.50 | - | 47 | test NOP | +| [BadHash](doc/BadHash.txt) | 522.75 | 96.39 | - | 47 | test FAIL | +| [sumhash](doc/sumhash.txt) | 7135.41 | 31.14 | - | 363 | test FAIL | +| [sumhash32](doc/sumhash32.txt) | 23873.87 | 22.49 | - | 863 | test FAIL | +| [multiply_shift](doc/multiply_shift.txt) | 4909.57 | 45.28 | too slow | 345 | fails all tests | | [pair_multiply_shift](doc/pair_multiply_shift)| 13604.46 | 31.71 | too slow | 609 | fails all tests | | -------------------------- | | | | | | -| [crc32](doc/crc32) | 392.05 | 130.08 | 199.87 (3) | 422 | insecure, 8590x collisions, distrib | -| [md5_32a](doc/md5_32a) | 351.96 | 670.99 | 863.30 (23)|4419 | 8590x collisions, distrib | -| [sha1_32a](doc/sha1_32a) | 353.03 | 1385.80 |1759.94 (5) |5126 | collisions, 36.6% distrib | -| [md5-128](doc/md5-128) | 317.78 | 730.30 | 830.69 (7) |4419 | | -| [sha1-160](doc/sha1-160) | 364.95 | 1470.55 |1794.16 (13)|5126 | | -| [sha2-224](doc/sha2-224) | 147.13 | 1354.81 |1589.92 (12)| | | -| [sha2-224_64](doc/sha2-224_64) | 147.60 | 1360.10 |1620.93 (13)| | | -| [sha2-256](doc/sha2-256) | 147.80 | 1374.90 |1606.06 (16)| | Moment Chi2 4 | -| [sha2-256_64](doc/sha2-256_64) | 148.01 | 1376.34 |1624.71 (16)| | Moment Chi2 7 | -| [sha1ni](doc/sha1ni) | 2019.96 | 135.84 | 564.40 (6) | 989 | insecure,sanity, Permutation, Zeroes, machine-specific | -| [sha1ni_32](doc/sha1ni_32) | 2019.94 | 136.82 | 589.46 (1) | 989 | machine-specific | -| [sha2ni-256](doc/sha2ni-256) | 1906.77 | 145.47 | 603.08 (22)|4241 | insecure,sanity, Permutation, Zeroes, machine-specific | -| [sha2ni-256_64](doc/sha2ni-256_64) | 1910.34 | 146.06 | 595.16 (6) |4241 | machine-specific | -| [blake3_c](doc/blake3_c) | 1233.40 | 360.68 | 524.40 (4) | | Moment Chi2, no 32bit portability | -| [rmd128](doc/rmd128) | 332.78 | 672.35 | 903.43 (13)| | | -| [rmd160](doc/rmd160) | 202.16 | 1045.79 |1287.74 (16)| | | -| [rmd256](doc/rmd256) | 356.57 | 638.30 | 815.39 (16)| | | -| [blake2s-128](doc/blake2s-128) | 295.30 | 698.09 |1059.24 (51)| | | -| [blake2s-160](doc/blake2s-160) | 215.01 | 1026.74 |1239.54 (11)| | | -| [blake2s-224](doc/blake2s-224) | 207.06 | 1063.86 |1236.50 (20)| | | -| [blake2s-256](doc/blake2s-256) | 215.28 | 1014.88 |1230.38 (28)| | | -| [blake2s-256_64](doc/blake2s-256_64) | 211.52 | 1044.22 |1228.43 (8) | | | -| [blake2b-160](doc/blake2b-160) | 356.08 | 1236.84 |1458.15 (12)| | | -| [blake2b-224](doc/blake2b-224) | 356.59 | 1228.50 |1425.87 (16)| | | -| [blake2b-256](doc/blake2b-256) | 355.97 | 1232.22 |1443.31 (19)| | Sparse high 32-bit | -| [blake2b-256_64](doc/blake2b-256_64) | 356.97 | 1222.76 |1435.03 (9) | | | -| [sha3-256](doc/sha3-256) | 100.58 | 3877.18 |4159.79 (37)| | | -| [sha3-256_64](doc/sha3-256_64) | 100.57 | 3909.00 |4174.63 (16)| | | -| [hasshe2](doc/hasshe2) | 2357.32 | 76.10 | 172.41 (3) | 445 | insecure, Permutation,TwoBytes,Zeroes,Seed | -| [crc32_hw](doc/crc32_hw) | 6292.63 | 30.38 | 204.19 (18)| 653 | insecure, 100% bias, collisions, distrib, machine-specific (x86 SSE4.2) | -| [crc32_hw1](doc/crc32_hw1) | 23382.53 | 36.84 | 197.39 (20)| 671 | insecure, 100% bias, collisions, distrib, machine-specific (x86 SSE4.2) | -| [crc64_hw](doc/crc64_hw) | 8387.01 | 29.96 | 161.44 (13)| 652 | insecure, 100% bias, collisions, distrib, machine-specific (x64 SSE4.2) | -| [crc32_pclmul](doc/crc32_pclmul) | 1932125.24 | 6.50 | - | 481 | insecure, 100% bias, collisions, distrib, machine-specific (x86 SSE4.2+PCLMUL) | -| [FastestHash](doc/FastestHash) | 14635755.30 | 16.04 | 357.77 (3) | | insecure, zeros, fails all tests | -| [fibonacci](doc/fibonacci) | 9462.17 | 33.52 | 774.87 (14)|1692 | zeros, fails all tests | -| [FNV1a](doc/FNV1a) | 780.53 | 69.65 | 197.06 (20)| 204 | zeros, fails all tests | -| [FNV1A_Totenschiff](doc/FNV1A_Totenschiff) | 6235.86 | 36.56 | 214.61 (18)| 270 | zeros, fails all tests | -| [FNV1A_Pippip_Yurii](doc/FNV1A_Pippip_Yurii) | 6238.08 | 37.22 | 218.06 (25)| 147 | sanity, fails all tests | -| [FNV1a_YT](doc/FNV1a_YT) | 9618.28 | 28.26 | 192.33 (18)| 321 | fails all tests | -| [FNV2](doc/FNV2) | 6244.26 | 38.25 | 168.46 (15)| 278 | fails all tests | -| [FNV64](doc/FNV64) | 791.82 | 69.82 | 184.87 (19)| 79 | fails all tests | -| [fletcher2](doc/fletcher2) | 11809.88 | 26.85 | 321.91 (13)| 248 | fails all tests | -| [fletcher4](doc/fletcher4) | 11973.55 | 26.94 | 324.53 (12)| 371 | fails all tests | -| [bernstein](doc/bernstein) | 791.83 | 67.15 | 200.11 (17)| 41 | fails all tests | -| [sdbm](doc/sdbm) | 785.84 | 67.02 | 209.44 (17)| 41 | fails all tests | -| [x17](doc/x17) | 522.46 | 97.51 | 214.03 (18)| 79 | 99.98% bias, fails all tests | -| [JenkinsOOAT](doc/JenkinsOOAT) | 446.57 | 142.43 | 245.34 (20)| 153 | 53.5% bias, fails all tests | -| [JenkinsOOAT_perl](doc/JenkinsOOAT_perl) | 445.69 | 118.69 | 222.62 (18)| 65 | 1.5-11.5% bias, 7.2x collisions, LongNeighbors | -| [MicroOAAT](doc/MicroOAAT) | 950.84 | 62.23 | 233.94 (19)| 68 | 100% bias, distrib | -| [VHASH_32](doc/VHASH_32) | 9502.36 | 86.97 | 273.67 (8) |1231 | sanity, Seed, MomentChi2 | -| [VHASH_64](doc/VHASH_64) | 9449.24 | 86.97 | 253.42 (9) |1231 | sanity, Seed, Sparse | -| [farsh32](doc/farsh32) | 14053.09 | 74.29 | 245.33 (3) | 944 | insecure: AppendedZeroes, collisions+bias, MomentChi2, LongNeighbors | -| [farsh64](doc/farsh64) | 7216.29 | 130.30 | 302.44 (3) | 944 | insecure: AppendedZeroes, collisions+bias, MomentChi2, LongNeighbors | -| [jodyhash32](doc/jodyhash32) | 1386.76 | 46.13 | 232.12 (21)| 102 | bias, collisions, distr, LongNeighbors | -| [jodyhash64](doc/jodyhash64) | 2765.84 | 40.89 | 222.41 (20)| 118 | bias, collisions, distr, LongNeighbors | -| [lookup3](doc/lookup3) | 1702.13 | 48.25 | 243.90 (19)| 341 | 28% bias, collisions, 30% distr | -| [superfast](doc/superfast) | 1899.70 | 54.19 | 240.49 (19)| 210 | 91% bias, 5273.01x collisions, 37% distr, BIC | -| [MurmurOAAT](doc/MurmurOAAT) | 437.03 | 117.00 | 236.62 (19)| 47 | collisions, 99.998% distr., BIC, LongNeighbors | -| [Crap8](doc/Crap8) | 3060.17 | 35.25 | 242.59 (20)| 342 | 2.42% bias, collisions, 2% distrib | -| [Murmur2](doc/Murmur2) | 3032.69 | 41.97 | 233.68 (19)| 358 | 1.7% bias, 81x coll, 1.7% distrib, BIC | -| [Murmur2A](doc/Murmur2A) | 3033.56 | 46.63 | 227.70 (20)| 407 | 12.7% bias, LongNeighbors | -| [Murmur2B](doc/Murmur2B) | 4728.94 | 47.90 | 192.82 (18)| 433 | 1.8% bias, collisions, 3.4% distrib, BIC | -| [Murmur2C](doc/Murmur2C) | 3817.99 | 47.67 | 207.53 (18)| 444 | 91% bias, collisions, distr, BIC, LongNeighbors | -| [Murmur3A](doc/Murmur3A) | 2347.90 | 51.38 | 237.58 (19)| 351 | Moment Chi2 69 | -| [PMurHash32](doc/PMurHash32) | 2281.97 | 58.65 | 259.59 (20)|1862 | Moment Chi2 69 | -| [Murmur3C](doc/Murmur3C) | 3093.46 | 68.53 | 256.49 (19)| 859 | LongNeighbors, DiffDist | -| [PMPML_32](doc/PMPML_32) | 6516.19 | 52.60 | 227.47 (8) |1084 | Avalanche >512, unseeded: Seed, MomentChi2 | -| [PMPML_64](doc/PMPML_64) | 8119.83 | 61.49 | 186.24 (4) |1305 | unseeded: Seed, MomentChi2 | -| [xxHash32](doc/xxHash32) | 5868.40 | 49.08 | 222.09 (21)| 738 | LongNeighbors, collisions with 4bit diff, MomentChi2 220 | -| [metrohash64](doc/metrohash64) | 9490.26 | 49.84 | 150.49 (3) | 624 | LongNeighbors, BIC | -| [metrohash64_1](doc/metrohash64_1) | 9274.60 | 50.85 | 201.37 (19)| 624 | LongNeighbors, BIC, MomentChi2 | -| [metrohash64crc_1](doc/metrohash64crc_1) | 13641.79 | 56.19 | 193.28 (19)| 632 | cyclic collisions 8 byte, BIC, MomentChi2, machine-specific (x64 SSE4.2) | -| [metrohash64crc_2](doc/metrohash64crc_2) | 13550.77 | 56.17 | 204.84 (18)| 632 | cyclic collisions 8 byte, BIC, machine-specific (x64 SSE4.2) | -| [cmetrohash64_1o](doc/cmetrohash64_1o) | 8851.32 | 50.59 | 193.19 (18)|3506 | LongNeighbors, MomentChi2 | -| [cmetrohash64_1](doc/cmetrohash64_1) | 9074.37 | 50.92 | 201.33 (18)| 652 | LongNeighbors, BIC, MomentChi2 | -| [City64noSeed](doc/City64noSeed) | 8873.07 | 38.70 | 171.57 (4) |1038 | Avalanche, Sparse, TwoBytes, MomentChi2, Seed | -| [City64](doc/City64) | 9213.05 | 55.52 | 200.24 (2) |1120 | Sparse, TwoBytes | -| [t1ha1_64le](doc/t1ha1_64le) | 9541.33 | 39.33 | 239.04 (16)| 517 | Avalanche | -| [t1ha1_64be](doc/t1ha1_64be) | 6848.76 | 41.08 | 230.22 (17)| 555 | Avalanche | -| [t1ha0_32le](doc/t1ha0_32le) | 4913.74 | 55.00 | 233.39 (18)| 509 | Sparse, LongNeighbors | -| [t1ha0_32be](doc/t1ha0_32be) | 4241.68 | 55.12 | 236.50 (18)| 533 | Sparse, LongNeighbors | -| [t1ha2_stream](doc/t1ha2_stream) | 8558.73 | 93.45 | 305.03 (16)|1665 | Sparse, Permutation, LongNeighbors | -| [t1ha2_stream128](doc/t1ha2_stream128) | 8846.52 | 117.19 | 270.95 (2) |1665 | Sparse, Permutation, LongNeighbors | -| [aesnihash](doc/aesnihash) | 2963.39 | 71.24 | 217.73 (3) | | fails most tests, machine-specific (x64 AES-NI) | -| [falkhash](doc/falkhash) | 20374.98 | 169.84 | 328.42 (5) | 264 | LongNeighbors, machine-specific (x64 AES-NI) | -| [MeowHash](doc/MeowHash) | 36695.65 | 58.09 | 233.81 (3) |1764 | Sparse low32, machine-specific (x64 AES-NI) | -| [MeowHash32low](doc/MeowHash32low) | 17247.34 | 87.32 | 245.98 (3) |1764 | Sparse, machine-specific (x64 AES-NI) | +| [crc32](doc/crc32.txt) | 392.05 | 130.08 | 199.87 (3) | 422 | insecure, 8590x collisions, distrib | +| [md5_32a](doc/md5_32a.txt) | 351.96 | 670.99 | 863.30 (23)|4419 | 8590x collisions, distrib | +| [sha1_32a](doc/sha1_32a.txt) | 353.03 | 1385.80 |1759.94 (5) |5126 | collisions, 36.6% distrib | +| [md5-128](doc/md5-128.txt) | 317.78 | 730.30 | 830.69 (7) |4419 | | +| [sha1-160](doc/sha1-160.txt) | 364.95 | 1470.55 |1794.16 (13)|5126 | | +| [sha2-224](doc/sha2-224.txt) | 147.13 | 1354.81 |1589.92 (12)| | | +| [sha2-224_64](doc/sha2-224_64.txt) | 147.60 | 1360.10 |1620.93 (13)| | | +| [sha2-256](doc/sha2-256.txt) | 147.80 | 1374.90 |1606.06 (16)| | Moment Chi2 4 | +| [sha2-256_64](doc/sha2-256_64.txt) | 148.01 | 1376.34 |1624.71 (16)| | Moment Chi2 7 | +| [sha1ni](doc/sha1ni.txt) | 2019.96 | 135.84 | 564.40 (6) | 989 | insecure,sanity, Permutation, Zeroes, machine-specific | +| [sha1ni_32](doc/sha1ni_32.txt) | 2019.94 | 136.82 | 589.46 (1) | 989 | machine-specific | +| [sha2ni-256](doc/sha2ni-256.txt) | 1906.77 | 145.47 | 603.08 (22)|4241 | insecure,sanity, Permutation, Zeroes, machine-specific | +| [sha2ni-256_64](doc/sha2ni-256_64.txt) | 1910.34 | 146.06 | 595.16 (6) |4241 | machine-specific | +| [blake3_c](doc/blake3_c.txt) | 1233.40 | 360.68 | 524.40 (4) | | Moment Chi2, no 32bit portability | +| [rmd128](doc/rmd128.txt) | 332.78 | 672.35 | 903.43 (13)| | | +| [rmd160](doc/rmd160.txt) | 202.16 | 1045.79 |1287.74 (16)| | | +| [rmd256](doc/rmd256.txt) | 356.57 | 638.30 | 815.39 (16)| | | +| [blake2s-128](doc/blake2s-128.txt) | 295.30 | 698.09 |1059.24 (51)| | | +| [blake2s-160](doc/blake2s-160.txt) | 215.01 | 1026.74 |1239.54 (11)| | | +| [blake2s-224](doc/blake2s-224.txt) | 207.06 | 1063.86 |1236.50 (20)| | | +| [blake2s-256](doc/blake2s-256.txt) | 215.28 | 1014.88 |1230.38 (28)| | | +| [blake2s-256_64](doc/blake2s-256_64.txt) | 211.52 | 1044.22 |1228.43 (8) | | | +| [blake2b-160](doc/blake2b-160.txt) | 356.08 | 1236.84 |1458.15 (12)| | | +| [blake2b-224](doc/blake2b-224.txt) | 356.59 | 1228.50 |1425.87 (16)| | | +| [blake2b-256](doc/blake2b-256.txt) | 355.97 | 1232.22 |1443.31 (19)| | Sparse high 32-bit | +| [blake2b-256_64](doc/blake2b-256_64.txt) | 356.97 | 1222.76 |1435.03 (9) | | | +| [sha3-256](doc/sha3-256.txt) | 100.58 | 3877.18 |4159.79 (37)| | | +| [sha3-256_64](doc/sha3-256_64.txt) | 100.57 | 3909.00 |4174.63 (16)| | | +| [hasshe2](doc/hasshe2.txt) | 2357.32 | 76.10 | 172.41 (3) | 445 | insecure, Permutation,TwoBytes,Zeroes,Seed | +| [crc32_hw](doc/crc32_hw.txt) | 6292.63 | 30.38 | 204.19 (18)| 653 | insecure, 100% bias, collisions, distrib, machine-specific (x86 SSE4.2) | +| [crc32_hw1](doc/crc32_hw1.txt) | 23382.53 | 36.84 | 197.39 (20)| 671 | insecure, 100% bias, collisions, distrib, machine-specific (x86 SSE4.2) | +| [crc64_hw](doc/crc64_hw.txt) | 8387.01 | 29.96 | 161.44 (13)| 652 | insecure, 100% bias, collisions, distrib, machine-specific (x64 SSE4.2) | +| [crc32_pclmul](doc/crc32_pclmul.txt) | 1932125.24 | 6.50 | - | 481 | insecure, 100% bias, collisions, distrib, machine-specific (x86 SSE4.2+PCLMUL) | +| [FastestHash](doc/FastestHash.txt) | 14635755.30 | 16.04 | 357.77 (3) | | insecure, zeros, fails all tests | +| [fibonacci](doc/fibonacci.txt) | 9462.17 | 33.52 | 774.87 (14)|1692 | zeros, fails all tests | +| [FNV1a](doc/FNV1a.txt) | 780.53 | 69.65 | 197.06 (20)| 204 | zeros, fails all tests | +| [FNV1A_Totenschiff](doc/FNV1A_Totenschiff.txt)| 6235.86 | 36.56 | 214.61 (18)| 270 | zeros, fails all tests | +| [FNV1A_Pippip_Yurii](doc/FNV1A_Pippip_Yurii.txt)| 6238.08 | 37.22 | 218.06 (25)| 147 | sanity, fails all tests | +| [FNV1a_YT](doc/FNV1a_YT.txt) | 9618.28 | 28.26 | 192.33 (18)| 321 | fails all tests | +| [FNV2](doc/FNV2.txt) | 6244.26 | 38.25 | 168.46 (15)| 278 | fails all tests | +| [FNV64](doc/FNV64.txt) | 791.82 | 69.82 | 184.87 (19)| 79 | fails all tests | +| [fletcher2](doc/fletcher2.txt) | 11809.88 | 26.85 | 321.91 (13)| 248 | fails all tests | +| [fletcher4](doc/fletcher4.txt) | 11973.55 | 26.94 | 324.53 (12)| 371 | fails all tests | +| [bernstein](doc/bernstein.txt) | 791.83 | 67.15 | 200.11 (17)| 41 | fails all tests | +| [sdbm](doc/sdbm.txt) | 785.84 | 67.02 | 209.44 (17)| 41 | fails all tests | +| [x17](doc/x17.txt) | 522.46 | 97.51 | 214.03 (18)| 79 | 99.98% bias, fails all tests | +| [JenkinsOOAT](doc/JenkinsOOAT.txt) | 446.57 | 142.43 | 245.34 (20)| 153 | 53.5% bias, fails all tests | +| [JenkinsOOAT_perl](doc/JenkinsOOAT_perl.txt) | 445.69 | 118.69 | 222.62 (18)| 65 | 1.5-11.5% bias, 7.2x collisions, LongNeighbors | +| [MicroOAAT](doc/MicroOAAT.txt) | 950.84 | 62.23 | 233.94 (19)| 68 | 100% bias, distrib | +| [VHASH_32](doc/VHASH_32.txt) | 9502.36 | 86.97 | 273.67 (8) |1231 | sanity, Seed, MomentChi2 | +| [VHASH_64](doc/VHASH_64.txt) | 9449.24 | 86.97 | 253.42 (9) |1231 | sanity, Seed, Sparse | +| [farsh32](doc/farsh32.txt) | 14053.09 | 74.29 | 245.33 (3) | 944 | insecure: AppendedZeroes, collisions+bias, MomentChi2, LongNeighbors | +| [farsh64](doc/farsh64.txt) | 7216.29 | 130.30 | 302.44 (3) | 944 | insecure: AppendedZeroes, collisions+bias, MomentChi2, LongNeighbors | +| [jodyhash32](doc/jodyhash32.txt) | 1386.76 | 46.13 | 232.12 (21)| 102 | bias, collisions, distr, LongNeighbors | +| [jodyhash64](doc/jodyhash64.txt) | 2765.84 | 40.89 | 222.41 (20)| 118 | bias, collisions, distr, LongNeighbors | +| [lookup3](doc/lookup3.txt) | 1702.13 | 48.25 | 243.90 (19)| 341 | 28% bias, collisions, 30% distr | +| [superfast](doc/superfast.txt) | 1899.70 | 54.19 | 240.49 (19)| 210 | 91% bias, 5273.01x collisions, 37% distr, BIC | +| [MurmurOAAT](doc/MurmurOAAT.txt) | 437.03 | 117.00 | 236.62 (19)| 47 | collisions, 99.998% distr., BIC, LongNeighbors | +| [Crap8](doc/Crap8.txt) | 3060.17 | 35.25 | 242.59 (20)| 342 | 2.42% bias, collisions, 2% distrib | +| [Murmur2](doc/Murmur2.txt) | 3032.69 | 41.97 | 233.68 (19)| 358 | 1.7% bias, 81x coll, 1.7% distrib, BIC | +| [Murmur2A](doc/Murmur2A.txt) | 3033.56 | 46.63 | 227.70 (20)| 407 | 12.7% bias, LongNeighbors | +| [Murmur2B](doc/Murmur2B.txt) | 4728.94 | 47.90 | 192.82 (18)| 433 | 1.8% bias, collisions, 3.4% distrib, BIC | +| [Murmur2C](doc/Murmur2C.txt) | 3817.99 | 47.67 | 207.53 (18)| 444 | 91% bias, collisions, distr, BIC, LongNeighbors | +| [Murmur3A](doc/Murmur3A.txt) | 2347.90 | 51.38 | 237.58 (19)| 351 | Moment Chi2 69 | +| [PMurHash32](doc/PMurHash32.txt) | 2281.97 | 58.65 | 259.59 (20)|1862 | Moment Chi2 69 | +| [Murmur3C](doc/Murmur3C.txt) | 3093.46 | 68.53 | 256.49 (19)| 859 | LongNeighbors, DiffDist | +| [PMPML_32](doc/PMPML_32.txt) | 6516.19 | 52.60 | 227.47 (8) |1084 | Avalanche >512, unseeded: Seed, MomentChi2 | +| [PMPML_64](doc/PMPML_64.txt) | 8119.83 | 61.49 | 186.24 (4) |1305 | unseeded: Seed, MomentChi2 | +| [xxHash32](doc/xxHash32.txt) | 5868.40 | 49.08 | 222.09 (21)| 738 | LongNeighbors, collisions with 4bit diff, MomentChi2 220 | +| [metrohash64](doc/metrohash64.txt) | 9490.26 | 49.84 | 150.49 (3) | 624 | LongNeighbors, BIC | +| [metrohash64_1](doc/metrohash64_1.txt) | 9274.60 | 50.85 | 201.37 (19)| 624 | LongNeighbors, BIC, MomentChi2 | +| [metrohash64crc_1](doc/metrohash64crc_1.txt) | 13641.79 | 56.19 | 193.28 (19)| 632 | cyclic collisions 8 byte, BIC, MomentChi2, machine-specific (x64 SSE4.2) | +| [metrohash64crc_2](doc/metrohash64crc_2.txt) | 13550.77 | 56.17 | 204.84 (18)| 632 | cyclic collisions 8 byte, BIC, machine-specific (x64 SSE4.2) | +| [cmetrohash64_1o](doc/cmetrohash64_1o.txt) | 8851.32 | 50.59 | 193.19 (18)|3506 | LongNeighbors, MomentChi2 | +| [cmetrohash64_1](doc/cmetrohash64_1.txt) | 9074.37 | 50.92 | 201.33 (18)| 652 | LongNeighbors, BIC, MomentChi2 | +| [City64noSeed](doc/City64noSeed.txt) | 8873.07 | 38.70 | 171.57 (4) |1038 | Avalanche, Sparse, TwoBytes, MomentChi2, Seed | +| [City64](doc/City64.txt) | 9213.05 | 55.52 | 200.24 (2) |1120 | Sparse, TwoBytes | +| [t1ha1_64le](doc/t1ha1_64le.txt) | 9541.33 | 39.33 | 239.04 (16)| 517 | Avalanche | +| [t1ha1_64be](doc/t1ha1_64be.txt) | 6848.76 | 41.08 | 230.22 (17)| 555 | Avalanche | +| [t1ha0_32le](doc/t1ha0_32le.txt) | 4913.74 | 55.00 | 233.39 (18)| 509 | Sparse, LongNeighbors | +| [t1ha0_32be](doc/t1ha0_32be.txt) | 4241.68 | 55.12 | 236.50 (18)| 533 | Sparse, LongNeighbors | +| [t1ha2_stream](doc/t1ha2_stream.txt) | 8558.73 | 93.45 | 305.03 (16)|1665 | Sparse, Permutation, LongNeighbors | +| [t1ha2_stream128](doc/t1ha2_stream128.txt) | 8846.52 | 117.19 | 270.95 (2) |1665 | Sparse, Permutation, LongNeighbors | +| [aesnihash](doc/aesnihash.txt) | 2963.39 | 71.24 | 217.73 (3) | | fails most tests, machine-specific (x64 AES-NI) | +| [falkhash](doc/falkhash.txt) | 20374.98 | 169.84 | 328.42 (5) | 264 | LongNeighbors, machine-specific (x64 AES-NI) | +| [MeowHash](doc/MeowHash.txt) | 36695.65 | 58.09 | 233.81 (3) |1764 | Sparse low32, machine-specific (x64 AES-NI) | +| [MeowHash32low](doc/MeowHash32low.txt) | 17247.34 | 87.32 | 245.98 (3) |1764 | Sparse, machine-specific (x64 AES-NI.txt) | | -------------------------------------- | | | | | | -| [tifuhash_64](doc/tifuhash_64) | 35.60 | 1679.52 |1212.75 (15)| 276 | | -| [floppsyhash_64](doc/floppsyhash_64) | 191.95 | 450.93 | 821.11 (152)| 623 | | -| [chaskey](doc/chaskey) | 735.85 | 168.05 | 336.07 (4) |1609 | | -| [SipHash](doc/SipHash) | 958.78 | 141.84 | 278.15 (3) |1071 | | -| [HalfSipHash](doc/HalfSipHash) | 741.59 | 122.25 | 256.22 (20)| 700 | zeroes | -| [beamsplitter](doc/beamsplitter) | 789.22 | 682.45 |1150.33 (26)| | | -| [GoodOAAT](doc/GoodOAAT) | 1052.90 | 70.80 | 208.00 (3) | 237 | | -| [SipHash13](doc/SipHash13) | 1762.44 | 104.61 | 304.84 (17)| 778 | 0.9% bias | -| [TSip](doc/TSip) | 3346.72 | 60.02 | 203.82 (5) | 519 | !msvc | -| [seahash](doc/seahash) | 4529.38 | 65.58 | 240.34 (7) | 871 | !msvc | -| [seahash32low](doc/seahash32low) | 4524.65 | 65.60 | 253.50 (3) | 871 | !msvc | -| [clhash](doc/clhash) | 4405.28 | 85.35 | 288.20 (14)|1809 | machine-specific (x64 SSE4.2) | -| [HighwayHash64](doc/HighwayHash64) | 6239.64 | 98.65 | 263.94 (4) |2546 | | -| [BEBB4185](doc/BEBB4185) | 2655.75 | 241.48 | 420.58 (7) | | | -| [Murmur3F](doc/Murmur3F) | 5076.20 | 51.66 | 222.39 (18)| 699 | | -| [fasthash32](doc/fasthash32) | 4658.24 | 50.50 | 181.96 (2) | 566 | | -| [fasthash64](doc/fasthash64) | 4657.64 | 47.71 | 168.22 (3) | 509 | Moment Chi2 5159 ! | -| [MUM](doc/MUM) | 6890.75 | 39.90 | 174.94 (3) |1912 | machine-specific (32/64 differs) | -| [MUMlow](doc/MUMlow) | 6893.98 | 46.02 | 191.55 (3) |1912 | | -| [mirhash](doc/mirhash) | 5453.50 | 42.31 | 163.35 (2) |1112 | LongNeighbors, machine-specific (32/64 differs) | -| [mirhash32low](doc/mirhash32low) | 5452.48 | 42.31 | 190.92 (2) |1112 | LongNeighbors, machine-specific (32/64 differs) | -| [mirhashstrict](doc/mirhashstrict) | 2217.70 | 65.39 | 175.38 (3) |1112 | | -| [mirhashstrict32low](doc/mirhashstrict32low) | 2217.87 | 64.72 | 188.44 (4) |1112 | MomentChi2 9 | -| [City32](doc/City32) | 3833.52 | 52.97 | 211.69 (4) |1319 | | -| [City64low](doc/City64low) | 9209.88 | 63.55 | 274.62 (17)|1120| | -| [City128](doc/City128) | 9747.33 | 77.22 | 269.02 (14)|1841 | | -| [CityCrc128](doc/CityCrc128) | 12958.29 | 77.31 | 267.14 (17)| 295 | | -| [FarmHash32](doc/FarmHash32) | 16663.96 | 63.67 | 265.35 (19)|11489| machine-specific (x64 SSE4/AVX) | -| [FarmHash64](doc/FarmHash64) | 8476.56 | 65.05 | 251.81 (17)|3758 | | -| [FarmHash128](doc/FarmHash128) | 9814.32 | 82.06 | 229.38 (4) | 163 | | -| [farmhash32_c](doc/farmhash32_c) | 17335.51 | 63.77 | 277.75 (18)| 762 | machine-specific (x64 SSE4/AVX) | -| [farmhash64_c](doc/farmhash64_c) | 8335.98 | 77.01 | 266.15 (18)|3688 | | -| [farmhash128_c](doc/farmhash128_c) | 10158.20 | 98.80 | 232.00 (2) |1890 | | -| [metrohash64_2](doc/metrohash64_2) | 9281.99 | 51.04 | 191.44 (20)| 627 | LongNeighbors | -| [cmetrohash64_2](doc/cmetrohash64_2) | 9302.98 | 51.09 | 194.04 (18)| 655 | LongNeighbors | -| [metrohash128](doc/metrohash128) | 9450.78 | 78.18 | 215.79 (2) | 773 | LongNeighbors | -| [metrohash128_1](doc/metrohash128_1) | 9263.64 | 79.71 | 240.70 (20)| 773 | LongNeighbors | -| [metrohash128_2](doc/metrohash128_2) | 9060.39 | 79.74 | 240.46 (20)| 773 | LongNeighbors | -| [metrohash128crc_1](doc/metrohash128crc_1) | 13668.29 | 85.94 | 249.99 (18)| 723 | machine-specific (x64 SSE4.2) | -| [metrohash128crc_2](doc/metrohash128crc_2) | 13600.83 | 85.92 | 239.28 (20)| 723 | machine-specific (x64 SSE4.2) | -| [xxHash64](doc/xxHash64) | 8719.19 | 59.22 | 210.40 (16)|1999 | | -| [Spooky32](doc/Spooky32) | 9570.40 | 70.27 | 250.23 (18)|2221 | | -| [Spooky64](doc/Spooky64) | 9603.18 | 70.19 | 231.73 (17)|2221 | | -| [Spooky128](doc/Spooky128) | 9865.67 | 70.84 | 185.64 (2) |2221 | | -| [xxh3](doc/xxh3) | 16377.47 | 37.20 | 179.88 (1) | 744 | Moment Chi2 14974, BIC | -| [xxh3low](doc/xxh3low) | 16403.22 | 37.19 | 184.18 (2) | 756 | Moment Chi2 1.8e+9 ! | -| [xxh128](doc/xxh128) | 15117.76 | 44.70 | 178.72 (1) |1012 | Moment Chi2 14974 | -| [xxh128low](doc/xxh128low) | 15109.04 | 38.98 | 174.91 (3) |1012 | Moment Chi2 14974, BIC | -| [t1ha2_atonce](doc/t1ha2_atonce) | 8192.03 | 48.48 | 230.46 (14)| 541 | | -| [t1ha2_atonce128](doc/t1ha2_atonce128) | 8382.53 | 64.15 | 199.63 (4) | 613 | LongNeighbors | -| [t1ha0_aes_noavx](doc/t1ha0_aes_noavx) | 21782.86 | 48.17 | 238.14 (18)| 925 | LongNeighbors, machine-specific (x86 AES-NI) | -| [t1ha0_aes_avx1](doc/t1ha0_aes_avx1) | 22714.85 | 48.12 | 226.52 (16)| 843 | LongNeighbors, machine-specific (x64 AVX) | -| [t1ha0_aes_avx2](doc/t1ha0_aes_avx2) | 22345.33 | 44.38 | 556.47 (89)| 792 | LongNeighbors, machine-specific (x64 AVX2) | -| [wyhash](doc/wyhash) | 12063.37 | 38.11 | 208.49 (3) | 938 | | -| [wyhash32low](doc/wyhash32low) | 12049.79 | 37.95 | 222.17 (4) | 922 | | +| [tifuhash_64](doc/tifuhash_64.txt) | 35.60 | 1679.52 |1212.75 (15)| 276 | | +| [floppsyhash_64](doc/floppsyhash_64.txt) | 191.95 | 450.93 | 821.11 (152)| 623 | | +| [chaskey](doc/chaskey.txt) | 735.85 | 168.05 | 336.07 (4) |1609 | | +| [SipHash](doc/SipHash.txt) | 958.78 | 141.84 | 278.15 (3) |1071 | | +| [HalfSipHash](doc/HalfSipHash.txt) | 741.59 | 122.25 | 256.22 (20)| 700 | zeroes | +| [beamsplitter](doc/beamsplitter.txt) | 789.22 | 682.45 |1150.33 (26)| | | +| [GoodOAAT](doc/GoodOAAT.txt) | 1052.90 | 70.80 | 208.00 (3) | 237 | | +| [SipHash13](doc/SipHash13.txt) | 1762.44 | 104.61 | 304.84 (17)| 778 | 0.9% bias | +| [TSip](doc/TSip.txt) | 3346.72 | 60.02 | 203.82 (5) | 519 | !msvc | +| [seahash](doc/seahash.txt) | 4529.38 | 65.58 | 240.34 (7) | 871 | !msvc | +| [seahash32low](doc/seahash32low.txt) | 4524.65 | 65.60 | 253.50 (3) | 871 | !msvc | +| [clhash](doc/clhash.txt) | 4405.28 | 85.35 | 288.20 (14)|1809 | machine-specific (x64 SSE4.2) | +| [HighwayHash64](doc/HighwayHash64.txt) | 6239.64 | 98.65 | 263.94 (4) |2546 | | +| [BEBB4185](doc/BEBB4185.txt) | 2655.75 | 241.48 | 420.58 (7) | | | +| [Murmur3F](doc/Murmur3F.txt) | 5076.20 | 51.66 | 222.39 (18)| 699 | | +| [fasthash32](doc/fasthash32.txt) | 4658.24 | 50.50 | 181.96 (2) | 566 | | +| [fasthash64](doc/fasthash64.txt) | 4657.64 | 47.71 | 168.22 (3) | 509 | Moment Chi2 5159 ! | +| [MUM](doc/MUM.txt) | 6890.75 | 39.90 | 174.94 (3) |1912 | machine-specific (32/64 differs) | +| [MUMlow](doc/MUMlow.txt) | 6893.98 | 46.02 | 191.55 (3) |1912 | | +| [mirhash](doc/mirhash.txt) | 5453.50 | 42.31 | 163.35 (2) |1112 | LongNeighbors, machine-specific (32/64 differs) | +| [mirhash32low](doc/mirhash32low.txt) | 5452.48 | 42.31 | 190.92 (2) |1112 | LongNeighbors, machine-specific (32/64 differs) | +| [mirhashstrict](doc/mirhashstrict.txt) | 2217.70 | 65.39 | 175.38 (3) |1112 | | +| [mirhashstrict32low](doc/mirhashstrict32low.txt)| 2217.87 | 64.72 | 188.44 (4) |1112 | MomentChi2 9 | +| [City32](doc/City32.txt) | 3833.52 | 52.97 | 211.69 (4) |1319 | | +| [City64low](doc/City64low.txt) | 9209.88 | 63.55 | 274.62 (17)|1120| | +| [City128](doc/City128.txt) | 9747.33 | 77.22 | 269.02 (14)|1841 | | +| [CityCrc128](doc/CityCrc128.txt) | 12958.29 | 77.31 | 267.14 (17)| 295 | | +| [FarmHash32](doc/FarmHash32.txt) | 16663.96 | 63.67 | 265.35 (19)|11489| machine-specific (x64 SSE4/AVX) | +| [FarmHash64](doc/FarmHash64.txt) | 8476.56 | 65.05 | 251.81 (17)|3758 | | +| [FarmHash128](doc/FarmHash128.txt) | 9814.32 | 82.06 | 229.38 (4) | 163 | | +| [farmhash32_c](doc/farmhash32_c.txt) | 17335.51 | 63.77 | 277.75 (18)| 762 | machine-specific (x64 SSE4/AVX) | +| [farmhash64_c](doc/farmhash64_c.txt) | 8335.98 | 77.01 | 266.15 (18)|3688 | | +| [farmhash128_c](doc/farmhash128_c.txt) | 10158.20 | 98.80 | 232.00 (2) |1890 | | +| [metrohash64_2](doc/metrohash64_2.txt) | 9281.99 | 51.04 | 191.44 (20)| 627 | LongNeighbors | +| [cmetrohash64_2](doc/cmetrohash64_2.txt) | 9302.98 | 51.09 | 194.04 (18)| 655 | LongNeighbors | +| [metrohash128](doc/metrohash128.txt) | 9450.78 | 78.18 | 215.79 (2) | 773 | LongNeighbors | +| [metrohash128_1](doc/metrohash128_1.txt) | 9263.64 | 79.71 | 240.70 (20)| 773 | LongNeighbors | +| [metrohash128_2](doc/metrohash128_2.txt) | 9060.39 | 79.74 | 240.46 (20)| 773 | LongNeighbors | +| [metrohash128crc_1](doc/metrohash128crc_1.txt)| 13668.29 | 85.94 | 249.99 (18)| 723 | machine-specific (x64 SSE4.2) | +| [metrohash128crc_2](doc/metrohash128crc_2.txt)| 13600.83 | 85.92 | 239.28 (20)| 723 | machine-specific (x64 SSE4.2) | +| [xxHash64](doc/xxHash64.txt) | 8719.19 | 59.22 | 210.40 (16)|1999 | | +| [Spooky32](doc/Spooky32.txt) | 9570.40 | 70.27 | 250.23 (18)|2221 | | +| [Spooky64](doc/Spooky64.txt) | 9603.18 | 70.19 | 231.73 (17)|2221 | | +| [Spooky128](doc/Spooky128.txt) | 9865.67 | 70.84 | 185.64 (2) |2221 | | +| [xxh3](doc/xxh3.txt) | 16377.47 | 37.20 | 179.88 (1) | 744 | Moment Chi2 14974, BIC | +| [xxh3low](doc/xxh3low.txt) | 16403.22 | 37.19 | 184.18 (2) | 756 | Moment Chi2 1.8e+9 ! | +| [xxh128](doc/xxh128.txt) | 15117.76 | 44.70 | 178.72 (1) |1012 | Moment Chi2 14974 | +| [xxh128low](doc/xxh128low.txt) | 15109.04 | 38.98 | 174.91 (3) |1012 | Moment Chi2 14974, BIC | +| [t1ha2_atonce](doc/t1ha2_atonce.txt) | 8192.03 | 48.48 | 230.46 (14)| 541 | | +| [t1ha2_atonce128](doc/t1ha2_atonce128.txt) | 8382.53 | 64.15 | 199.63 (4) | 613 | LongNeighbors | +| [t1ha0_aes_noavx](doc/t1ha0_aes_noavx.txt) | 21782.86 | 48.17 | 238.14 (18)| 925 | LongNeighbors, machine-specific (x86 AES-NI) | +| [t1ha0_aes_avx1](doc/t1ha0_aes_avx1) | 22714.85 | 48.12 | 226.52 (16)| 843 | LongNeighbors, machine-specific (x64 AVX.txt)| +| [t1ha0_aes_avx2](doc/t1ha0_aes_avx2.txt) | 22345.33 | 44.38 | 556.47 (89)| 792 | LongNeighbors, machine-specific (x64 AVX2) | +| [wyhash](doc/wyhash.txt) | 12063.37 | 38.11 | 208.49 (3) | 938 | | +| [wyhash32low](doc/wyhash32low.txt) | 12049.79 | 37.95 | 222.17 (4) | 922 | | The [sortable table variant](http://rurban.github.io/smhasher/doc/table.html) diff --git a/checkdoctests.pl b/checkdoctests.pl index 02f82e7b..f4e23faf 100755 --- a/checkdoctests.pl +++ b/checkdoctests.pl @@ -13,7 +13,7 @@ if (@ARGV) { readf($_) for @ARGV; } else { - readf($_) for ; + readf($_) for ; } sub readf { @@ -58,6 +58,6 @@ sub check { for (@tests) { push @t, $_ unless $r->{$_}; } - print join(',',@t)," $n >>doc/$n\n"; + print join(',',@t)," $n >>doc/$n.txt\n"; } } diff --git a/doc/BEBB4185 b/doc/BEBB4185.txt similarity index 100% rename from doc/BEBB4185 rename to doc/BEBB4185.txt diff --git a/doc/BadHash b/doc/BadHash.txt similarity index 100% rename from doc/BadHash rename to doc/BadHash.txt diff --git a/doc/City128 b/doc/City128.txt similarity index 100% rename from doc/City128 rename to doc/City128.txt diff --git a/doc/City32 b/doc/City32.txt similarity index 100% rename from doc/City32 rename to doc/City32.txt diff --git a/doc/City64 b/doc/City64.txt similarity index 100% rename from doc/City64 rename to doc/City64.txt diff --git a/doc/City64low b/doc/City64low.txt similarity index 100% rename from doc/City64low rename to doc/City64low.txt diff --git a/doc/City64noSeed b/doc/City64noSeed.txt similarity index 100% rename from doc/City64noSeed rename to doc/City64noSeed.txt diff --git a/doc/CityCrc128 b/doc/CityCrc128.txt similarity index 100% rename from doc/CityCrc128 rename to doc/CityCrc128.txt diff --git a/doc/Crap8 b/doc/Crap8.txt similarity index 100% rename from doc/Crap8 rename to doc/Crap8.txt diff --git a/doc/FNV1A_Pippip_Yurii b/doc/FNV1A_Pippip_Yurii.txt similarity index 100% rename from doc/FNV1A_Pippip_Yurii rename to doc/FNV1A_Pippip_Yurii.txt diff --git a/doc/FNV1A_Totenschiff b/doc/FNV1A_Totenschiff.txt similarity index 100% rename from doc/FNV1A_Totenschiff rename to doc/FNV1A_Totenschiff.txt diff --git a/doc/FNV1a b/doc/FNV1a.txt similarity index 100% rename from doc/FNV1a rename to doc/FNV1a.txt diff --git a/doc/FNV1a_YT b/doc/FNV1a_YT.txt similarity index 100% rename from doc/FNV1a_YT rename to doc/FNV1a_YT.txt diff --git a/doc/FNV2 b/doc/FNV2.txt similarity index 100% rename from doc/FNV2 rename to doc/FNV2.txt diff --git a/doc/FNV64 b/doc/FNV64.txt similarity index 100% rename from doc/FNV64 rename to doc/FNV64.txt diff --git a/doc/FarmHash128 b/doc/FarmHash128.txt similarity index 100% rename from doc/FarmHash128 rename to doc/FarmHash128.txt diff --git a/doc/FarmHash32 b/doc/FarmHash32.txt similarity index 100% rename from doc/FarmHash32 rename to doc/FarmHash32.txt diff --git a/doc/FarmHash64 b/doc/FarmHash64.txt similarity index 100% rename from doc/FarmHash64 rename to doc/FarmHash64.txt diff --git a/doc/FastestHash.txt b/doc/FastestHash.txt new file mode 100644 index 00000000..a691bc62 --- /dev/null +++ b/doc/FastestHash.txt @@ -0,0 +1,781 @@ +------------------------------------------------------------------------------- +--- Testing FastestHash "FastestHash from wyhash v5 (unseeded)" POOR + +[[[ Sanity Tests ]]] + +Verification value 0xCEF65501 ....... PASS +Running sanity check 1 . 0: 0x30 == 0x30 FAIL !!!!! +Running AppendedZeroesTest . FAIL !!!!! + +[[[ Speed Tests ]]] + +Bulk speed test - 262144-byte keys +Alignment 7 - 5110.459 bytes/cycle - 14621140.30 MiB/sec @ 3 ghz +Alignment 6 - 5107.799 bytes/cycle - 14613531.54 MiB/sec @ 3 ghz +Alignment 5 - 5115.749 bytes/cycle - 14636276.46 MiB/sec @ 3 ghz +Alignment 4 - 5125.430 bytes/cycle - 14663974.09 MiB/sec @ 3 ghz +Alignment 3 - 5113.542 bytes/cycle - 14629960.09 MiB/sec @ 3 ghz +Alignment 2 - 5107.336 bytes/cycle - 14612206.55 MiB/sec @ 3 ghz +Alignment 1 - 5130.114 bytes/cycle - 14677375.16 MiB/sec @ 3 ghz +Alignment 0 - 5114.107 bytes/cycle - 14631578.22 MiB/sec @ 3 ghz +Average - 5115.567 bytes/cycle - 14635755.30 MiB/sec @ 3 ghz + +Small key speed test - 1-byte keys - 13.21 cycles/hash +Small key speed test - 2-byte keys - 13.00 cycles/hash +Small key speed test - 3-byte keys - 13.00 cycles/hash +Small key speed test - 4-byte keys - 14.00 cycles/hash +Small key speed test - 5-byte keys - 20.00 cycles/hash +Small key speed test - 6-byte keys - 20.00 cycles/hash +Small key speed test - 7-byte keys - 20.00 cycles/hash +Small key speed test - 8-byte keys - 20.00 cycles/hash +Small key speed test - 9-byte keys - 20.00 cycles/hash +Small key speed test - 10-byte keys - 20.00 cycles/hash +Small key speed test - 11-byte keys - 20.00 cycles/hash +Small key speed test - 12-byte keys - 20.00 cycles/hash +Small key speed test - 13-byte keys - 20.00 cycles/hash +Small key speed test - 14-byte keys - 20.00 cycles/hash +Small key speed test - 15-byte keys - 20.00 cycles/hash +Small key speed test - 16-byte keys - 20.00 cycles/hash +Small key speed test - 17-byte keys - 20.00 cycles/hash +Small key speed test - 18-byte keys - 20.00 cycles/hash +Small key speed test - 19-byte keys - 20.00 cycles/hash +Small key speed test - 20-byte keys - 12.00 cycles/hash +Small key speed test - 21-byte keys - 12.00 cycles/hash +Small key speed test - 22-byte keys - 11.99 cycles/hash +Small key speed test - 23-byte keys - 11.98 cycles/hash +Small key speed test - 24-byte keys - 12.00 cycles/hash +Small key speed test - 25-byte keys - 12.00 cycles/hash +Small key speed test - 26-byte keys - 12.00 cycles/hash +Small key speed test - 27-byte keys - 12.00 cycles/hash +Small key speed test - 28-byte keys - 11.99 cycles/hash +Small key speed test - 29-byte keys - 12.00 cycles/hash +Small key speed test - 30-byte keys - 11.99 cycles/hash +Small key speed test - 31-byte keys - 11.99 cycles/hash +Average 16.037 cycles/hash + +[[[ 'Hashmap' Speed Tests ]]] + +std::unordered_map +Init std HashMapTest: 677.913 cycles/op (479826 inserts, 1% deletions) +Running std HashMapTest: 475.943 cycles/op (4.3 stdv) + +greg7mdp/parallel-hashmap +Init fast HashMapTest: 820.392 cycles/op (479826 inserts, 1% deletions) +Running fast HashMapTest: 357.775 cycles/op (3.0 stdv) ....... PASS + +[[[ Avalanche Tests ]]] + +Testing 24-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 32-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 40-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 48-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 56-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 64-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 72-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 80-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 96-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 112-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 128-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 160-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 512-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +Testing 1024-bit keys -> 64-bit hashes, 300000 reps worst bias is 100.000000% !!!!! +*********FAIL********* + +[[[ Keyset 'Sparse' Tests ]]] + +Keyset 'Sparse' - 16-bit keys with up to 9 bits set - 50643 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 0.6, actual 50642 (84808.71x) (50642) !!!!! +Testing collisions (high 19-26 bits) - Worst is 26 bits: 50642/38 (1325.14x) !!!!! +Testing collisions (high 12-bit) - Expected 50643.0, actual 50642 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 50643.0, actual 50642 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 0.6, actual 0 (0.00x) +Testing collisions (low 19-26 bits) - Worst is 23 bits: 22819/305 (74.64x) !!!!! +Testing collisions (low 12-bit) - Expected 50643.0, actual 50387 (0.99x) (-256) +Testing collisions (low 8-bit) - Expected 50643.0, actual 50387 (0.99x) (-256) +Testing distribution - Worst bias is the 13-bit window at bit 24 - 99.988% !!!!! + +Keyset 'Sparse' - 24-bit keys with up to 8 bits set - 1271626 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 376.5, actual 1271625 (3377.54x) (1271249) !!!!! +Testing collisions (high 24-36 bits) - Worst is 36 bits: 1271625/23 (54040.64x) !!!!! +Testing collisions (high 12-bit) - Expected 1271626.0, actual 1271625 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 1271626.0, actual 1271625 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 376.5, actual 0 (0.00x) +Testing collisions (low 24-36 bits) - Worst is 0 bits: 0/ 1 (0.00x) +Testing collisions (low 12-bit) - Expected 1271626.0, actual 1267829 (1.00x) (-3797) +Testing collisions (low 8-bit) - Expected 1271626.0, actual 1271370 (1.00x) (-256) +Testing distribution - Worst bias is the 17-bit window at bit 24 - 99.999% !!!!! + +Keyset 'Sparse' - 32-bit keys with up to 7 bits set - 4514873 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 4746.0, actual 4514871 (951.29x) (4510125) !!!!! +Testing collisions (high 26-39 bits) - Worst is 39 bits: 4514618/37 (121758.66x) !!!!! +Testing collisions (high 12-bit) - Expected 4514873.0, actual 4514872 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 4514873.0, actual 4514872 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 4746.0, actual 942649 (198.62x) (937903) !!!!! +Testing collisions (low 26-39 bits) - Worst is 32 bits: 942649/4746 (198.62x) !!!!! +Testing collisions (low 12-bit) - Expected 4514873.0, actual 4513057 (1.00x) (-1816) +Testing collisions (low 8-bit) - Expected 4514873.0, actual 4514745 (1.00x) (-128) +Testing distribution - Worst bias is the 19-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 40-bit keys with up to 6 bits set - 4598479 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 325799 (284211174182.72x) !!!!! +Testing collisions (high 32-bit) - Expected 4923.4, actual 4598477 (934.00x) (4593554) !!!!! +Testing collisions (high 26-39 bits) - Worst is 39 bits: 4598278/38 (119546.46x) !!!!! +Testing collisions (high 12-bit) - Expected 4598479.0, actual 4598478 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 4598479.0, actual 4598478 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 4923.4, actual 348205 (70.72x) (343282) !!!!! +Testing collisions (low 26-39 bits) - Worst is 39 bits: 325799/38 (8470.15x) !!!!! +Testing collisions (low 12-bit) - Expected 4598479.0, actual 4594896 (1.00x) (-3583) +Testing collisions (low 8-bit) - Expected 4598479.0, actual 4598232 (1.00x) (-247) +Testing distribution - Worst bias is the 19-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 48-bit keys with up to 6 bits set - 14196869 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 9795812 (896551093926.05x) !!!!! +Testing collisions (high 32-bit) - Expected 46927.3, actual 14196867 (302.53x) (14149940) !!!!! +Testing collisions (high 28-43 bits) - Worst is 43 bits: 14194334/22 (619469.19x) !!!!! +Testing collisions (high 12-bit) - Expected 14196869.0, actual 14196868 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 14196869.0, actual 14196868 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 46927.3, actual 9832276 (209.52x) (9785349) !!!!! +Testing collisions (low 28-43 bits) - Worst is 43 bits: 9795812/22 (427508.88x) !!!!! +Testing collisions (low 12-bit) - Expected 14196869.0, actual 14193286 (1.00x) (-3583) +Testing collisions (low 8-bit) - Expected 14196869.0, actual 14196622 (1.00x) (-247) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 56-bit keys with up to 5 bits set - 4216423 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 2966470 (3078020009785.10x) !!!!! +Testing collisions (high 32-bit) - Expected 4139.3, actual 4216421 (1018.63x) (4212282) !!!!! +Testing collisions (high 26-39 bits) - Worst is 39 bits: 4216229/32 (130378.44x) !!!!! +Testing collisions (high 12-bit) - Expected 4216423.0, actual 4216422 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 4216423.0, actual 4216422 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 4139.3, actual 2972390 (718.09x) (2968251) !!!!! +Testing collisions (low 26-39 bits) - Worst is 39 bits: 2966470/32 (91732.14x) !!!!! +Testing collisions (low 12-bit) - Expected 4216423.0, actual 4214549 (1.00x) (-1874) +Testing collisions (low 8-bit) - Expected 4216423.0, actual 4216204 (1.00x) (-219) +Testing distribution - Worst bias is the 19-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 64-bit keys with up to 5 bits set - 8303633 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 4685494 (1253541939094.05x) !!!!! +Testing collisions (high 32-bit) - Expected 16053.7, actual 8303631 (517.24x) (8287578) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8303065/31 (264808.56x) !!!!! +Testing collisions (high 12-bit) - Expected 8303633.0, actual 8303632 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8303633.0, actual 8303632 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16053.7, actual 4718340 (293.91x) (4702287) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 4685494/31 (149433.84x) !!!!! +Testing collisions (low 12-bit) - Expected 8303633.0, actual 8301022 (1.00x) (-2611) +Testing collisions (low 8-bit) - Expected 8303633.0, actual 8303414 (1.00x) (-219) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 72-bit keys with up to 5 bits set - 15082603 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 9360042 (759005545774.12x) !!!!! +Testing collisions (high 32-bit) - Expected 52965.5, actual 15082601 (284.76x) (15029636) !!!!! +Testing collisions (high 28-43 bits) - Worst is 43 bits: 15080774/25 (583123.94x) !!!!! +Testing collisions (high 12-bit) - Expected 15082603.0, actual 15082602 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 15082603.0, actual 15082602 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 52965.5, actual 9405802 (177.58x) (9352837) !!!!! +Testing collisions (low 28-43 bits) - Worst is 43 bits: 9360042/25 (361922.05x) !!!!! +Testing collisions (low 12-bit) - Expected 15082603.0, actual 15079992 (1.00x) (-2611) +Testing collisions (low 8-bit) - Expected 15082603.0, actual 15082384 (1.00x) (-219) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 96-bit keys with up to 4 bits set - 3469497 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 3304657 (5064227468540.67x) !!!!! +Testing collisions (high 32-bit) - Expected 2802.7, actual 3469495 (1237.92x) (3466693) !!!!! +Testing collisions (high 26-39 bits) - Worst is 39 bits: 3469369/21 (158448.24x) !!!!! +Testing collisions (high 12-bit) - Expected 3469497.0, actual 3469496 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 3469497.0, actual 3469496 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 2802.7, actual 3305828 (1179.53x) (3303026) !!!!! +Testing collisions (low 26-39 bits) - Worst is 39 bits: 3304657/21 (150925.74x) !!!!! +Testing collisions (low 12-bit) - Expected 3469497.0, actual 3468703 (1.00x) (-794) +Testing collisions (low 8-bit) - Expected 3469497.0, actual 3469334 (1.00x) (-163) +Testing distribution - Worst bias is the 19-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 160-bit keys with up to 4 bits set - 26977161 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 26935183 (682727162110.94x) !!!!! +Testing collisions (high 32-bit) - Expected 169446.5, actual 26977159 (159.21x) (26807713) !!!!! +Testing collisions (high 29-45 bits) - Worst is 45 bits: 26975976/20 (1304170.88x) !!!!! +Testing collisions (high 12-bit) - Expected 26977161.0, actual 26977160 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 26977161.0, actual 26977160 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 169446.5, actual 26935712 (158.96x) (26766266) !!!!! +Testing collisions (low 29-45 bits) - Worst is 45 bits: 26935183/20 (1302198.72x) !!!!! +Testing collisions (low 12-bit) - Expected 26977161.0, actual 26976367 (1.00x) (-794) +Testing collisions (low 8-bit) - Expected 26977161.0, actual 26976998 (1.00x) (-163) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 256-bit keys with up to 3 bits set - 2796417 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 2790895 (6583540448411.71x) !!!!! +Testing collisions (high 32-bit) - Expected 1820.7, actual 2796415 (1535.88x) (2794595) !!!!! +Testing collisions (high 25-38 bits) - Worst is 38 bits: 2796368/28 (98294.78x) !!!!! +Testing collisions (high 12-bit) - Expected 2796417.0, actual 2796416 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 2796417.0, actual 2796416 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 1820.7, actual 2790928 (1532.87x) (2789108) !!!!! +Testing collisions (low 25-38 bits) - Worst is 38 bits: 2790895/28 (98102.40x) !!!!! +Testing collisions (low 12-bit) - Expected 2796417.0, actual 2796118 (1.00x) (-299) +Testing collisions (low 8-bit) - Expected 2796417.0, actual 2796324 (1.00x) (-93) +Testing distribution - Worst bias is the 19-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 512-bit keys with up to 3 bits set - 22370049 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 22364527 (824414437258.18x) !!!!! +Testing collisions (high 32-bit) - Expected 116512.9, actual 22370047 (192.00x) (22253535) !!!!! +Testing collisions (high 28-44 bits) - Worst is 44 bits: 22369737/28 (786406.03x) !!!!! +Testing collisions (high 12-bit) - Expected 22370049.0, actual 22370048 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 22370049.0, actual 22370048 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 116512.9, actual 22364560 (191.95x) (22248048) !!!!! +Testing collisions (low 28-44 bits) - Worst is 44 bits: 22364527/28 (786222.87x) !!!!! +Testing collisions (low 12-bit) - Expected 22370049.0, actual 22369750 (1.00x) (-299) +Testing collisions (low 8-bit) - Expected 22370049.0, actual 22369956 (1.00x) (-93) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +Keyset 'Sparse' - 1024-bit keys with up to 2 bits set - 524801 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 524271 (35114547608413.82x) !!!!! +Testing collisions (high 32-bit) - Expected 64.1, actual 524799 (8183.98x) (524735) !!!!! +Testing collisions (high 23-33 bits) - Worst is 33 bits: 524798/32 (16367.92x) !!!!! +Testing collisions (high 12-bit) - Expected 524801.0, actual 524800 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 524801.0, actual 524800 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 64.1, actual 524272 (8175.76x) (524208) !!!!! +Testing collisions (low 23-33 bits) - Worst is 33 bits: 524271/32 (16351.49x) !!!!! +Testing collisions (low 12-bit) - Expected 524801.0, actual 524722 (1.00x) (-79) +Testing collisions (low 8-bit) - Expected 524801.0, actual 524764 (1.00x) (-37) +Testing distribution - Worst bias is the 16-bit window at bit 33 - 99.998% !!!!! + +Keyset 'Sparse' - 2048-bit keys with up to 2 bits set - 2098177 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 2097647 (8789579340269.98x) !!!!! +Testing collisions (high 32-bit) - Expected 1025.0, actual 2098175 (2047.00x) (2097150) !!!!! +Testing collisions (high 25-37 bits) - Worst is 37 bits: 2098160/32 (65503.48x) !!!!! +Testing collisions (high 12-bit) - Expected 2098177.0, actual 2098176 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 2098177.0, actual 2098176 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 1025.0, actual 2097648 (2046.48x) (2096623) !!!!! +Testing collisions (low 25-37 bits) - Worst is 37 bits: 2097647/32 (65487.47x) !!!!! +Testing collisions (low 12-bit) - Expected 2098177.0, actual 2098098 (1.00x) (-79) +Testing collisions (low 8-bit) - Expected 2098177.0, actual 2098140 (1.00x) (-37) +Testing distribution - Worst bias is the 18-bit window at bit 33 - 100.000% !!!!! + +*********FAIL********* + +[[[ Keyset 'Permutation' Tests ]]] + +Combination Lowbits Tests: +Keyset 'Combination' - up to 7 blocks from a set of 8 - 2396744 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 2395776 (7693479767904.68x) !!!!! +Testing collisions (high 32-bit) - Expected 1337.5, actual 2396743 (1792.00x) (2395406) !!!!! +Testing collisions (high 25-38 bits) - Worst is 38 bits: 2396742/20 (114688.01x) !!!!! +Testing collisions (high 12-bit) - Expected 2396744.0, actual 2396743 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 2396744.0, actual 2396743 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 1337.5, actual 2395776 (1791.28x) (2394439) !!!!! +Testing collisions (low 25-38 bits) - Worst is 38 bits: 2395776/20 (114641.78x) !!!!! +Testing collisions (low 12-bit) - Expected 2396744.0, actual 2396672 (1.00x) (-72) +Testing collisions (low 8-bit) - Expected 2396744.0, actual 2396728 (1.00x) (-16) +Testing distribution - Worst bias is the 18-bit window at bit 27 - 100.000% !!!!! + +*********FAIL********* + +Combination Highbits Tests +Keyset 'Combination' - up to 7 blocks from a set of 8 - 2396744 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 2395776 (7693479767904.68x) !!!!! +Testing collisions (high 32-bit) - Expected 1337.5, actual 2396742 (1792.00x) (2395405) !!!!! +Testing collisions (high 25-38 bits) - Worst is 38 bits: 2396728/20 (114687.34x) !!!!! +Testing collisions (high 12-bit) - Expected 2396744.0, actual 2396743 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 2396744.0, actual 2396743 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 1337.5, actual 2395784 (1791.28x) (2394447) !!!!! +Testing collisions (low 25-38 bits) - Worst is 38 bits: 2395776/20 (114641.78x) !!!!! +Testing collisions (low 12-bit) - Expected 2396744.0, actual 2396736 (1.00x) (-8) +Testing collisions (low 8-bit) - Expected 2396744.0, actual 2396736 (1.00x) (-8) +Testing distribution - Worst bias is the 18-bit window at bit 33 - 100.000% !!!!! + +*********FAIL********* + +Combination Hi-Lo Tests: +Keyset 'Combination' - up to 6 blocks from a set of 15 - 12204240 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 12126439 (1501867313241.54x) !!!!! +Testing collisions (high 32-bit) - Expected 34678.6, actual 12204238 (351.92x) (12169560) !!!!! +Testing collisions (high 27-42 bits) - Worst is 42 bits: 12203976/33 (360362.61x) !!!!! +Testing collisions (high 12-bit) - Expected 12204240.0, actual 12204239 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 12204240.0, actual 12204239 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 34678.6, actual 12126503 (349.68x) (12091825) !!!!! +Testing collisions (low 27-42 bits) - Worst is 42 bits: 12126439/33 (358073.07x) !!!!! +Testing collisions (low 12-bit) - Expected 12204240.0, actual 12203720 (1.00x) (-520) +Testing collisions (low 8-bit) - Expected 12204240.0, actual 12204168 (1.00x) (-72) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +*********FAIL********* + +Combination 0x8000000 Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388592 (2199020371966.09x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388604 (512.00x) (8372221) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388600/31 (262143.91x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388594 (512.00x) (8372211) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388592/31 (262143.66x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +*********FAIL********* + +Combination 0x0000001 Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388592 (2199020371966.09x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388604/31 (262144.03x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388592 (512.00x) (8372209) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388592/31 (262143.66x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388600 (1.00x) (-6) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388602 (1.00x) (-4) +Testing distribution - Worst bias is the 20-bit window at bit 25 - 100.000% !!!!! + +*********FAIL********* + +Combination 0x800000000000000 Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388596 (2199021420542.72x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388602/31 (262143.97x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388596 (512.00x) (8372213) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388596/31 (262143.78x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 32 - 100.000% !!!!! + +*********FAIL********* + +Combination 0x000000000000001 Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388596 (2199021420542.72x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388604/31 (262144.03x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388596 (512.00x) (8372213) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388596/31 (262143.78x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388602 (1.00x) (-4) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 25 - 100.000% !!!!! + +*********FAIL********* + +Combination 16-bytes [0-1] Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388598 (2199021944831.03x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388605/31 (262144.06x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388598 (512.00x) (8372215) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388598/31 (262143.84x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388602 (1.00x) (-4) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 17 - 100.000% !!!!! + +*********FAIL********* + +Combination 16-bytes [0-last] Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388598 (2199021944831.03x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388604/31 (262144.03x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388598 (512.00x) (8372215) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388598/31 (262143.84x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 32 - 100.000% !!!!! + +*********FAIL********* + +Combination 32-bytes [0-1] Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388598 (2199021944831.03x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388605/31 (262144.06x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388598 (512.00x) (8372215) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388598/31 (262143.84x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388602 (1.00x) (-4) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 17 - 100.000% !!!!! + +*********FAIL********* + +Combination 32-bytes [0-last] Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388598 (2199021944831.03x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388604/31 (262144.03x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388598 (512.00x) (8372215) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388598/31 (262143.84x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 32 - 100.000% !!!!! + +*********FAIL********* + +Combination 64-bytes [0-1] Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388598 (2199021944831.03x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388605/31 (262144.06x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388598 (512.00x) (8372215) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388598/31 (262143.84x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388602 (1.00x) (-4) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 17 - 100.000% !!!!! + +*********FAIL********* + +Combination 64-bytes [0-last] Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388598 (2199021944831.03x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388604/31 (262144.03x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388598 (512.00x) (8372215) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388598/31 (262143.84x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 32 - 100.000% !!!!! + +*********FAIL********* + +Combination 128-bytes [0-1] Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388598 (2199021944831.03x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388605/31 (262144.06x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388598 (512.00x) (8372215) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388598/31 (262143.84x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388602 (1.00x) (-4) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 17 - 100.000% !!!!! + +*********FAIL********* + +Combination 128-bytes [0-last] Tests: +Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8388598 (2199021944831.03x) !!!!! +Testing collisions (high 32-bit) - Expected 16384.0, actual 8388605 (512.00x) (8372222) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 8388604/31 (262144.03x) !!!!! +Testing collisions (high 12-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 8388606.0, actual 8388605 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 16384.0, actual 8388598 (512.00x) (8372215) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 8388598/31 (262143.84x) !!!!! +Testing collisions (low 12-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing collisions (low 8-bit) - Expected 8388606.0, actual 8388604 (1.00x) (-2) +Testing distribution - Worst bias is the 20-bit window at bit 32 - 100.000% !!!!! + +*********FAIL********* + +[[[ Keyset 'Window' Tests ]]] + +Keyset 'Window' - 32-bit key, 25-bit window - 32 tests, 33554432 keys per test +Window at 0 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 1 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 2 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 3 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 4 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 5 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 6 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 7 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 8 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 9 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 10 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 11 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 12 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 13 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 14 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 15 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 16 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 17 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 18 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 19 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 20 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 21 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 22 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 23 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 24 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 25 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 26 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 27 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 28 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 29 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 30 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 31 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Window at 32 - Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) + +[[[ Keyset 'Cyclic' Tests ]]] + +Keyset 'Cyclic' - 8 cycles of 8 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 52 (959231651.06x) !!!!! +Testing collisions (high 32-bit) - Expected 232.8, actual 999998 (4294.96x) (999766) !!!!! +Testing collisions (high 24-35 bits) - Worst is 35 bits: 999984/29 (34359.22x) !!!!! +Testing collisions (high 12-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 232.8, actual 109 (0.47x) +Testing collisions (low 24-35 bits) - Worst is 35 bits: 52/29 (1.79x) +Testing collisions (low 12-bit) - Expected 1000000.0, actual 995904 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 1000000.0, actual 999744 (1.00x) (-256) +Testing distribution - Worst bias is the 17-bit window at bit 33 - 99.999% !!!!! + +Keyset 'Cyclic' - 8 cycles of 9 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 55 (1014571938.63x) !!!!! +Testing collisions (high 32-bit) - Expected 232.8, actual 999998 (4294.96x) (999766) !!!!! +Testing collisions (high 24-35 bits) - Worst is 35 bits: 999984/29 (34359.22x) !!!!! +Testing collisions (high 12-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 232.8, actual 107 (0.46x) +Testing collisions (low 24-35 bits) - Worst is 35 bits: 55/29 (1.89x) +Testing collisions (low 12-bit) - Expected 1000000.0, actual 995904 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 1000000.0, actual 999744 (1.00x) (-256) +Testing distribution - Worst bias is the 17-bit window at bit 33 - 99.999% !!!!! + +Keyset 'Cyclic' - 8 cycles of 10 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 61 (1125252513.75x) !!!!! +Testing collisions (high 32-bit) - Expected 232.8, actual 999998 (4294.96x) (999766) !!!!! +Testing collisions (high 24-35 bits) - Worst is 35 bits: 999984/29 (34359.22x) !!!!! +Testing collisions (high 12-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 232.8, actual 127 (0.55x) +Testing collisions (low 24-35 bits) - Worst is 35 bits: 61/29 (2.10x) !!!!! +Testing collisions (low 12-bit) - Expected 1000000.0, actual 995904 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 1000000.0, actual 999744 (1.00x) (-256) +Testing distribution - Worst bias is the 17-bit window at bit 33 - 99.999% !!!!! + +Keyset 'Cyclic' - 8 cycles of 11 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 50 (922338126.02x) !!!!! +Testing collisions (high 32-bit) - Expected 232.8, actual 999998 (4294.96x) (999766) !!!!! +Testing collisions (high 24-35 bits) - Worst is 35 bits: 999984/29 (34359.22x) !!!!! +Testing collisions (high 12-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 232.8, actual 103 (0.44x) +Testing collisions (low 24-35 bits) - Worst is 35 bits: 50/29 (1.72x) +Testing collisions (low 12-bit) - Expected 1000000.0, actual 995904 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 1000000.0, actual 999744 (1.00x) (-256) +Testing distribution - Worst bias is the 17-bit window at bit 33 - 99.999% !!!!! + +Keyset 'Cyclic' - 8 cycles of 12 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 66 (1217486326.35x) !!!!! +Testing collisions (high 32-bit) - Expected 232.8, actual 999998 (4294.96x) (999766) !!!!! +Testing collisions (high 24-35 bits) - Worst is 35 bits: 999984/29 (34359.22x) !!!!! +Testing collisions (high 12-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 232.8, actual 107 (0.46x) +Testing collisions (low 24-35 bits) - Worst is 35 bits: 66/29 (2.27x) !!!!! +Testing collisions (low 12-bit) - Expected 1000000.0, actual 995904 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 1000000.0, actual 999744 (1.00x) (-256) +Testing distribution - Worst bias is the 17-bit window at bit 33 - 99.999% !!!!! + +Keyset 'Cyclic' - 8 cycles of 16 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 53 (977678413.59x) !!!!! +Testing collisions (high 32-bit) - Expected 232.8, actual 999998 (4294.96x) (999766) !!!!! +Testing collisions (high 24-35 bits) - Worst is 35 bits: 999984/29 (34359.22x) !!!!! +Testing collisions (high 12-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 1000000.0, actual 999999 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 232.8, actual 114 (0.49x) +Testing collisions (low 24-35 bits) - Worst is 35 bits: 53/29 (1.82x) +Testing collisions (low 12-bit) - Expected 1000000.0, actual 995904 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 1000000.0, actual 999744 (1.00x) (-256) +Testing distribution - Worst bias is the 17-bit window at bit 33 - 99.999% !!!!! + +*********FAIL********* + +[[[ Keyset 'TwoBytes' Tests ]]] + +Keyset 'TwoBytes' - up-to-4-byte keys, 652545 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 82555 (3576373244053.75x) !!!!! +Testing collisions (high 32-bit) - Expected 99.1, actual 652543 (6581.86x) (652444) !!!!! +Testing collisions (high 23-34 bits) - Worst is 34 bits: 652537/24 (26327.20x) !!!!! +Testing collisions (high 12-bit) - Expected 652545.0, actual 652544 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 652545.0, actual 652544 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 99.1, actual 180602 (1821.64x) (180503) !!!!! +Testing collisions (low 23-34 bits) - Worst is 34 bits: 82555/24 (3330.76x) !!!!! +Testing collisions (low 12-bit) - Expected 652545.0, actual 648449 (0.99x) (-4096) +Testing collisions (low 8-bit) - Expected 652545.0, actual 652289 (1.00x) (-256) +Testing distribution - Worst bias is the 16-bit window at bit 33 - 99.998% !!!!! + +Keyset 'TwoBytes' - up-to-8-byte keys, 5471025 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 3009590 (1854768614839.53x) !!!!! +Testing collisions (high 32-bit) - Expected 6969.1, actual 5471023 (785.04x) (5464054) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 5470513/27 (200951.18x) !!!!! +Testing collisions (high 12-bit) - Expected 5471025.0, actual 5471024 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 5471025.0, actual 5471024 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 6969.1, actual 3179014 (456.16x) (3172045) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 3009590/27 (110552.82x) !!!!! +Testing collisions (low 12-bit) - Expected 5471025.0, actual 5466929 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 5471025.0, actual 5470769 (1.00x) (-256) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +Keyset 'TwoBytes' - up-to-12-byte keys, 18616785 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 15463962 (823059350537.81x) !!!!! +Testing collisions (high 32-bit) - Expected 80695.5, actual 18616783 (230.70x) (18536088) !!!!! +Testing collisions (high 28-43 bits) - Worst is 43 bits: 18612689/39 (472377.92x) !!!!! +Testing collisions (high 12-bit) - Expected 18616785.0, actual 18616784 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 18616785.0, actual 18616784 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 80695.5, actual 15679487 (194.30x) (15598792) !!!!! +Testing collisions (low 28-43 bits) - Worst is 43 bits: 15463962/39 (392465.28x) !!!!! +Testing collisions (low 12-bit) - Expected 18616785.0, actual 18612689 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 18616785.0, actual 18616529 (1.00x) (-256) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +Keyset 'TwoBytes' - up-to-16-byte keys, 44251425 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 41050087 (386704559808.84x) !!!!! +Testing collisions (high 32-bit) - Expected 455926.3, actual 44251423 (97.06x) (43795497) !!!!! +Testing collisions (high 29-46 bits) - Worst is 46 bits: 44218657/27 (1589025.39x) !!!!! +Testing collisions (high 12-bit) - Expected 44251425.0, actual 44251424 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 44251425.0, actual 44251424 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 455926.3, actual 41290124 (90.56x) (40834198) !!!!! +Testing collisions (low 29-46 bits) - Worst is 46 bits: 41050087/27 (1475160.83x) !!!!! +Testing collisions (low 12-bit) - Expected 44251425.0, actual 44247329 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 44251425.0, actual 44251169 (1.00x) (-256) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +Keyset 'TwoBytes' - up-to-20-byte keys, 86536545 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 83335207 (205281183242.57x) !!!!! +Testing collisions (high 32-bit) - Expected 1743569.4, actual 86536543 (49.63x) (84792974) !!!!! +Testing collisions (high 30-48 bits) - Worst is 48 bits: 86416268/26 (3248150.92x) !!!!! +Testing collisions (high 12-bit) - Expected 86536545.0, actual 86536544 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 86536545.0, actual 86536544 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 1743569.4, actual 83575244 (47.93x) (81831675) !!!!! +Testing collisions (low 30-48 bits) - Worst is 48 bits: 83335207/26 (3132342.27x) !!!!! +Testing collisions (low 12-bit) - Expected 86536545.0, actual 86532449 (1.00x) (-4096) +Testing collisions (low 8-bit) - Expected 86536545.0, actual 86536289 (1.00x) (-256) +Testing distribution - Worst bias is the 20-bit window at bit 33 - 100.000% !!!!! + +*********FAIL********* + +[[[ Keyset 'Text' Tests ]]] + +Keyset 'Text' - keys of form "Foo[XXXX]Bar" - 14776336 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 8415384 (710984567035.38x) !!!!! +Testing collisions (high 32-bit) - Expected 50836.3, actual 14776335 (290.67x) (14725499) !!!!! +Testing collisions (high 28-43 bits) - Worst is 43 bits: 14775824/24 (595261.83x) !!!!! +Testing collisions (high 12-bit) - Expected 14776336.0, actual 14776335 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 14776336.0, actual 14776335 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 50836.3, actual 8415384 (165.54x) (8364548) !!!!! +Testing collisions (low 28-43 bits) - Worst is 43 bits: 8415384/24 (339023.86x) !!!!! +Testing collisions (low 12-bit) - Expected 14776336.0, actual 14774288 (1.00x) (-2048) +Testing collisions (low 8-bit) - Expected 14776336.0, actual 14776208 (1.00x) (-128) +Testing distribution - Worst bias is the 20-bit window at bit 31 - 100.000% !!!!! + +Keyset 'Text' - keys of form "FooBar[XXXX]" - 14776336 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 50836.3, actual 14776335 (290.67x) (14725499) !!!!! +Testing collisions (high 28-43 bits) - Worst is 43 bits: 14775952/24 (595266.99x) !!!!! +Testing collisions (high 12-bit) - Expected 14776336.0, actual 14776335 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 14776336.0, actual 14776335 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 50836.3, actual 0 (0.00x) +Testing collisions (low 28-43 bits) - Worst is 29 bits: 8579808/406690 (21.10x) !!!!! +Testing collisions (low 12-bit) - Expected 14776336.0, actual 14775344 (1.00x) (-992) +Testing collisions (low 8-bit) - Expected 14776336.0, actual 14776274 (1.00x) (-62) +Testing distribution - Worst bias is the 20-bit window at bit 31 - 100.000% !!!!! + +Keyset 'Text' - keys of form "[XXXX]FooBar" - 14776336 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 50836.3, actual 14776335 (290.67x) (14725499) !!!!! +Testing collisions (high 28-43 bits) - Worst is 43 bits: 14776150/24 (595274.96x) !!!!! +Testing collisions (high 12-bit) - Expected 14776336.0, actual 14776335 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 14776336.0, actual 14776335 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 50836.3, actual 0 (0.00x) +Testing collisions (low 28-43 bits) - Worst is 28 bits: 2578880/813380 (3.17x) !!!!! +Testing collisions (low 12-bit) - Expected 14776336.0, actual 14774288 (1.00x) (-2048) +Testing collisions (low 8-bit) - Expected 14776336.0, actual 14776208 (1.00x) (-128) +Testing distribution - Worst bias is the 20-bit window at bit 31 - 100.000% !!!!! + +*********FAIL********* + +[[[ Keyset 'Zeroes' Tests ]]] + +Keyset 'Zeroes' - 204800 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 204799 (90071992547409.92x) !!!!! +Testing collisions (high 32-bit) - Expected 9.8, actual 204799 (20971.52x) (204790) !!!!! +Testing collisions (high 21-30 bits) - Worst is 30 bits: 204799/39 (5242.88x) !!!!! +Testing collisions (high 12-bit) - Expected 204800.0, actual 204799 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 204800.0, actual 204799 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 9.8, actual 204799 (20971.52x) (204790) !!!!! +Testing collisions (low 21-30 bits) - Worst is 30 bits: 204799/39 (5242.88x) !!!!! +Testing collisions (low 12-bit) - Expected 204800.0, actual 204799 (1.00x) (-1) +Testing collisions (low 8-bit) - Expected 204800.0, actual 204799 (1.00x) (-1) +Testing distribution - Worst bias is the 15-bit window at bit 0 - 99.997% !!!!! + +*********FAIL********* + +[[[ Keyset 'Seed' Tests ]]] + +Keyset 'Seed' - 5000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 4997251 (3687321148227.79x) !!!!! +Testing collisions (high 32-bit) - Expected 5820.8, actual 4999999 (858.99x) (4994179) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4999999/22 (219902.33x) !!!!! +Testing collisions (high 12-bit) - Expected 5000000.0, actual 4999999 (1.00x) (-1) +Testing collisions (high 8-bit) - Expected 5000000.0, actual 4999999 (1.00x) (-1) +Testing collisions (low 32-bit) - Expected 5820.8, actual 4997251 (858.52x) (4991431) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 4997251/22 (219781.47x) !!!!! +Testing collisions (low 12-bit) - Expected 5000000.0, actual 4999986 (1.00x) (-14) +Testing collisions (low 8-bit) - Expected 5000000.0, actual 4999997 (1.00x) (-3) +Testing distribution - Worst bias is the 19-bit window at bit 24 - 100.000% !!!!! + +*********FAIL********* + + +[[[ Keyset 'PerlinNoise' Tests ]]] + +Testing 16777216 coordinates (L2) : +Testing collisions ( 64-bit) - Expected 0.0, actual 15728640 (1030792212480.00x) !!!!! +Testing collisions (high 32-bit) - Expected 65536.0, actual 16777215 (256.00x) (16711680) !!!!! +Testing collisions (high 28-43 bits) - Worst is 43 bits: 16777208/31 (524287.78x) !!!!! +Testing collisions (low 32-bit) - Expected 65536.0, actual 15728640 (240.00x) (15663105) !!!!! +Testing collisions (low 28-43 bits) - Worst is 43 bits: 15728640/31 (491520.03x) !!!!! + +*********FAIL********* + + +[[[ Diff 'Differential' Tests ]]] + +[[[ DiffDist 'Differential Distribution' Tests ]]] + +[[[ MomentChi2 Tests ]]] + +Analyze hashes produced from a serie of linearly increasing numbers of 32-bit, using a step of 3 ... +Target values to approximate : 38918200.000000 - 410450.000000 +Popcount 1 stats : 1391295.918958 - 1030.935909 +Popcount 0 stats : 263696448.754837 - 4208221.438604 +MomentChi2 for bits 1 : 3.42244e+09 +MomentChi2 for bits 0 : 1.09393e+10 + +Derivative stats (transition from 2 consecutive values) : +Popcount 1 stats : 2162.970024 - 0.281456 +Popcount 0 stats : 848923981.655968 - 5603123.804993 +MomentChi2 for deriv b1 : 3.68975e+09 +MomentChi2 for deriv b0 : 1.09105e+11 + + FAIL !!!! + + +*********FAIL********* + +[[[ Prng Tests ]]] + +Generating 33554432 random numbers : +Testing collisions ( 64-bit) - Expected 0.0, actual 33554431 (549755813888.00x) !!!!! +Testing collisions (high 32-bit) - Expected 262144.0, actual 33554431 (128.00x) (33292288) !!!!! +Testing collisions (high 29-45 bits) - Worst is 45 bits: 33554431/31 (1048576.00x) !!!!! +Testing collisions (low 32-bit) - Expected 262144.0, actual 33554431 (128.00x) (33292288) !!!!! +Testing collisions (low 29-45 bits) - Worst is 45 bits: 33554431/31 (1048576.00x) !!!!! + +*********FAIL********* + + +[[[ BIC 'Bit Independence Criteria' Tests ]]] diff --git a/doc/GoodOAAT b/doc/GoodOAAT.txt similarity index 100% rename from doc/GoodOAAT rename to doc/GoodOAAT.txt diff --git a/doc/HalfSipHash b/doc/HalfSipHash.txt similarity index 100% rename from doc/HalfSipHash rename to doc/HalfSipHash.txt diff --git a/doc/HighwayHash64 b/doc/HighwayHash64.txt similarity index 100% rename from doc/HighwayHash64 rename to doc/HighwayHash64.txt diff --git a/doc/JenkinsOOAT b/doc/JenkinsOOAT.txt similarity index 100% rename from doc/JenkinsOOAT rename to doc/JenkinsOOAT.txt diff --git a/doc/JenkinsOOAT_perl b/doc/JenkinsOOAT_perl.txt similarity index 100% rename from doc/JenkinsOOAT_perl rename to doc/JenkinsOOAT_perl.txt diff --git a/doc/MUM b/doc/MUM.txt similarity index 100% rename from doc/MUM rename to doc/MUM.txt diff --git a/doc/MUMlow b/doc/MUMlow.txt similarity index 100% rename from doc/MUMlow rename to doc/MUMlow.txt diff --git a/doc/MeowHash b/doc/MeowHash.txt similarity index 100% rename from doc/MeowHash rename to doc/MeowHash.txt diff --git a/doc/MeowHash32low b/doc/MeowHash32low.txt similarity index 100% rename from doc/MeowHash32low rename to doc/MeowHash32low.txt diff --git a/doc/MicroOAAT b/doc/MicroOAAT.txt similarity index 100% rename from doc/MicroOAAT rename to doc/MicroOAAT.txt diff --git a/doc/Murmur2 b/doc/Murmur2.txt similarity index 100% rename from doc/Murmur2 rename to doc/Murmur2.txt diff --git a/doc/Murmur2A b/doc/Murmur2A.txt similarity index 100% rename from doc/Murmur2A rename to doc/Murmur2A.txt diff --git a/doc/Murmur2B b/doc/Murmur2B.txt similarity index 100% rename from doc/Murmur2B rename to doc/Murmur2B.txt diff --git a/doc/Murmur2C b/doc/Murmur2C.txt similarity index 100% rename from doc/Murmur2C rename to doc/Murmur2C.txt diff --git a/doc/Murmur3A b/doc/Murmur3A.txt similarity index 100% rename from doc/Murmur3A rename to doc/Murmur3A.txt diff --git a/doc/Murmur3C b/doc/Murmur3C.txt similarity index 100% rename from doc/Murmur3C rename to doc/Murmur3C.txt diff --git a/doc/Murmur3F b/doc/Murmur3F.txt similarity index 100% rename from doc/Murmur3F rename to doc/Murmur3F.txt diff --git a/doc/MurmurOAAT b/doc/MurmurOAAT.txt similarity index 100% rename from doc/MurmurOAAT rename to doc/MurmurOAAT.txt diff --git a/doc/NOP_OAAT_read64 b/doc/NOP_OAAT_read64.txt similarity index 100% rename from doc/NOP_OAAT_read64 rename to doc/NOP_OAAT_read64.txt diff --git a/doc/PMPML_32 b/doc/PMPML_32.txt similarity index 100% rename from doc/PMPML_32 rename to doc/PMPML_32.txt diff --git a/doc/PMPML_64 b/doc/PMPML_64.txt similarity index 100% rename from doc/PMPML_64 rename to doc/PMPML_64.txt diff --git a/doc/PMurHash32 b/doc/PMurHash32.txt similarity index 100% rename from doc/PMurHash32 rename to doc/PMurHash32.txt diff --git a/doc/SipHash b/doc/SipHash.txt similarity index 100% rename from doc/SipHash rename to doc/SipHash.txt diff --git a/doc/SipHash13 b/doc/SipHash13.txt similarity index 100% rename from doc/SipHash13 rename to doc/SipHash13.txt diff --git a/doc/Spooky128 b/doc/Spooky128.txt similarity index 100% rename from doc/Spooky128 rename to doc/Spooky128.txt diff --git a/doc/Spooky32 b/doc/Spooky32.txt similarity index 100% rename from doc/Spooky32 rename to doc/Spooky32.txt diff --git a/doc/Spooky64 b/doc/Spooky64.txt similarity index 100% rename from doc/Spooky64 rename to doc/Spooky64.txt diff --git a/doc/TSip b/doc/TSip.txt similarity index 100% rename from doc/TSip rename to doc/TSip.txt diff --git a/doc/VHASH_32 b/doc/VHASH_32.txt similarity index 100% rename from doc/VHASH_32 rename to doc/VHASH_32.txt diff --git a/doc/VHASH_64 b/doc/VHASH_64.txt similarity index 100% rename from doc/VHASH_64 rename to doc/VHASH_64.txt diff --git a/doc/aesnihash b/doc/aesnihash.txt similarity index 100% rename from doc/aesnihash rename to doc/aesnihash.txt diff --git a/doc/beamsplitter b/doc/beamsplitter.txt similarity index 100% rename from doc/beamsplitter rename to doc/beamsplitter.txt diff --git a/doc/bernstein b/doc/bernstein.txt similarity index 100% rename from doc/bernstein rename to doc/bernstein.txt diff --git a/doc/blake2b-160 b/doc/blake2b-160.txt similarity index 100% rename from doc/blake2b-160 rename to doc/blake2b-160.txt diff --git a/doc/blake2b-224 b/doc/blake2b-224.txt similarity index 100% rename from doc/blake2b-224 rename to doc/blake2b-224.txt diff --git a/doc/blake2b-256 b/doc/blake2b-256.txt similarity index 100% rename from doc/blake2b-256 rename to doc/blake2b-256.txt diff --git a/doc/blake2b-256_64 b/doc/blake2b-256_64.txt similarity index 100% rename from doc/blake2b-256_64 rename to doc/blake2b-256_64.txt diff --git a/doc/blake2s-128 b/doc/blake2s-128.txt similarity index 100% rename from doc/blake2s-128 rename to doc/blake2s-128.txt diff --git a/doc/blake2s-160 b/doc/blake2s-160.txt similarity index 100% rename from doc/blake2s-160 rename to doc/blake2s-160.txt diff --git a/doc/blake2s-224 b/doc/blake2s-224.txt similarity index 100% rename from doc/blake2s-224 rename to doc/blake2s-224.txt diff --git a/doc/blake2s-256 b/doc/blake2s-256.txt similarity index 100% rename from doc/blake2s-256 rename to doc/blake2s-256.txt diff --git a/doc/blake2s-256_64 b/doc/blake2s-256_64.txt similarity index 100% rename from doc/blake2s-256_64 rename to doc/blake2s-256_64.txt diff --git a/doc/blake3_c b/doc/blake3_c.txt similarity index 100% rename from doc/blake3_c rename to doc/blake3_c.txt diff --git a/doc/chaskey b/doc/chaskey.txt similarity index 100% rename from doc/chaskey rename to doc/chaskey.txt diff --git a/doc/clhash b/doc/clhash.txt similarity index 100% rename from doc/clhash rename to doc/clhash.txt diff --git a/doc/cmetrohash64_1 b/doc/cmetrohash64_1.txt similarity index 100% rename from doc/cmetrohash64_1 rename to doc/cmetrohash64_1.txt diff --git a/doc/cmetrohash64_1o b/doc/cmetrohash64_1o.txt similarity index 100% rename from doc/cmetrohash64_1o rename to doc/cmetrohash64_1o.txt diff --git a/doc/cmetrohash64_2 b/doc/cmetrohash64_2.txt similarity index 100% rename from doc/cmetrohash64_2 rename to doc/cmetrohash64_2.txt diff --git a/doc/crc32 b/doc/crc32.txt similarity index 100% rename from doc/crc32 rename to doc/crc32.txt diff --git a/doc/crc32_hw b/doc/crc32_hw.txt similarity index 100% rename from doc/crc32_hw rename to doc/crc32_hw.txt diff --git a/doc/crc32_hw1 b/doc/crc32_hw1.txt similarity index 100% rename from doc/crc32_hw1 rename to doc/crc32_hw1.txt diff --git a/doc/crc32_pclmul b/doc/crc32_pclmul.txt similarity index 100% rename from doc/crc32_pclmul rename to doc/crc32_pclmul.txt diff --git a/doc/crc64_hw b/doc/crc64_hw.txt similarity index 100% rename from doc/crc64_hw rename to doc/crc64_hw.txt diff --git a/doc/crcutil b/doc/crcutil.txt similarity index 100% rename from doc/crcutil rename to doc/crcutil.txt diff --git a/doc/donothing128 b/doc/donothing128.txt similarity index 100% rename from doc/donothing128 rename to doc/donothing128.txt diff --git a/doc/donothing32 b/doc/donothing32.txt similarity index 100% rename from doc/donothing32 rename to doc/donothing32.txt diff --git a/doc/donothing64 b/doc/donothing64.txt similarity index 100% rename from doc/donothing64 rename to doc/donothing64.txt diff --git a/doc/falkhash b/doc/falkhash.txt similarity index 100% rename from doc/falkhash rename to doc/falkhash.txt diff --git a/doc/farmhash128_c b/doc/farmhash128_c.txt similarity index 100% rename from doc/farmhash128_c rename to doc/farmhash128_c.txt diff --git a/doc/farmhash32_c b/doc/farmhash32_c.txt similarity index 100% rename from doc/farmhash32_c rename to doc/farmhash32_c.txt diff --git a/doc/farmhash64_c b/doc/farmhash64_c.txt similarity index 100% rename from doc/farmhash64_c rename to doc/farmhash64_c.txt diff --git a/doc/farsh128.txt b/doc/farsh128.txt new file mode 100644 index 00000000..a267fc0e --- /dev/null +++ b/doc/farsh128.txt @@ -0,0 +1,63 @@ +[[[ Sanity Tests ]]] + +Verification value 0x82B6CBEC ....... PASS +Running sanity check 1 .......... PASS +Running AppendedZeroesTest . FAIL !!!!! + +[[[ Speed Tests ]]] + +Bulk speed test - 262144-byte keys +Alignment 7 - 1.152 bytes/cycle - 3296.22 MiB/sec @ 3 ghz +Alignment 6 - 1.146 bytes/cycle - 3278.20 MiB/sec @ 3 ghz +Alignment 5 - 1.162 bytes/cycle - 3323.80 MiB/sec @ 3 ghz +Alignment 4 - 1.162 bytes/cycle - 3323.61 MiB/sec @ 3 ghz +Alignment 3 - 1.162 bytes/cycle - 3323.67 MiB/sec @ 3 ghz +Alignment 2 - 1.162 bytes/cycle - 3323.33 MiB/sec @ 3 ghz +Alignment 1 - 1.162 bytes/cycle - 3323.61 MiB/sec @ 3 ghz +Alignment 0 - 1.206 bytes/cycle - 3449.83 MiB/sec @ 3 ghz +Average - 1.164 bytes/cycle - 3330.28 MiB/sec @ 3 ghz + +Small key speed test - 1-byte keys - 253.00 cycles/hash +Small key speed test - 2-byte keys - 256.00 cycles/hash +Small key speed test - 3-byte keys - 259.14 cycles/hash +Small key speed test - 4-byte keys - 149.10 cycles/hash +Small key speed test - 5-byte keys - 253.00 cycles/hash +Small key speed test - 6-byte keys - 253.00 cycles/hash +Small key speed test - 7-byte keys - 253.00 cycles/hash +Small key speed test - 8-byte keys - 162.00 cycles/hash +Small key speed test - 9-byte keys - 252.57 cycles/hash +Small key speed test - 10-byte keys - 256.00 cycles/hash +Small key speed test - 11-byte keys - 256.00 cycles/hash +Small key speed test - 12-byte keys - 164.00 cycles/hash +Small key speed test - 13-byte keys - 252.70 cycles/hash +Small key speed test - 14-byte keys - 252.62 cycles/hash +Small key speed test - 15-byte keys - 252.56 cycles/hash +Small key speed test - 16-byte keys - 173.50 cycles/hash +Small key speed test - 17-byte keys - 254.12 cycles/hash +Small key speed test - 18-byte keys - 258.98 cycles/hash +Small key speed test - 19-byte keys - 256.79 cycles/hash +Small key speed test - 20-byte keys - 177.51 cycles/hash +Small key speed test - 21-byte keys - 255.15 cycles/hash +Small key speed test - 22-byte keys - 253.00 cycles/hash +Small key speed test - 23-byte keys - 253.00 cycles/hash +Small key speed test - 24-byte keys - 181.79 cycles/hash +Small key speed test - 25-byte keys - 254.00 cycles/hash +Small key speed test - 26-byte keys - 258.00 cycles/hash +Small key speed test - 27-byte keys - 258.00 cycles/hash +Small key speed test - 28-byte keys - 189.48 cycles/hash +Small key speed test - 29-byte keys - 254.00 cycles/hash +Small key speed test - 30-byte keys - 254.00 cycles/hash +Small key speed test - 31-byte keys - 254.00 cycles/hash +Average 235.807 cycles/hash + +[[[ 'Hashmap' Speed Tests ]]] + +std::unordered_map +Init std HashMapTest: 656.478 cycles/op (102401 inserts, 1% deletions) +Running std HashMapTest: 474.400 cycles/op (4.1 stdv) + +greg7mdp/parallel-hashmap +Init fast HashMapTest: 732.970 cycles/op (102401 inserts, 1% deletions) +Running fast HashMapTest: 343.237 cycles/op (4.3 stdv) ....... PASS + + diff --git a/doc/farsh256.txt b/doc/farsh256.txt new file mode 100644 index 00000000..75f18606 --- /dev/null +++ b/doc/farsh256.txt @@ -0,0 +1,63 @@ +[[[ Sanity Tests ]]] + +Verification value 0xFEBEA0BC ....... PASS +Running sanity check 1 .......... PASS +Running AppendedZeroesTest . FAIL !!!!! + +[[[ Speed Tests ]]] + +Bulk speed test - 262144-byte keys +Alignment 7 - 0.590 bytes/cycle - 1688.24 MiB/sec @ 3 ghz +Alignment 6 - 0.590 bytes/cycle - 1688.26 MiB/sec @ 3 ghz +Alignment 5 - 0.590 bytes/cycle - 1688.13 MiB/sec @ 3 ghz +Alignment 4 - 0.590 bytes/cycle - 1688.23 MiB/sec @ 3 ghz +Alignment 3 - 0.590 bytes/cycle - 1688.21 MiB/sec @ 3 ghz +Alignment 2 - 0.590 bytes/cycle - 1688.20 MiB/sec @ 3 ghz +Alignment 1 - 0.590 bytes/cycle - 1688.21 MiB/sec @ 3 ghz +Alignment 0 - 0.614 bytes/cycle - 1757.69 MiB/sec @ 3 ghz +Average - 0.593 bytes/cycle - 1696.90 MiB/sec @ 3 ghz + +Small key speed test - 1-byte keys - 499.28 cycles/hash +Small key speed test - 2-byte keys - 504.86 cycles/hash +Small key speed test - 3-byte keys - 500.00 cycles/hash +Small key speed test - 4-byte keys - 292.50 cycles/hash +Small key speed test - 5-byte keys - 493.87 cycles/hash +Small key speed test - 6-byte keys - 493.97 cycles/hash +Small key speed test - 7-byte keys - 493.84 cycles/hash +Small key speed test - 8-byte keys - 338.22 cycles/hash +Small key speed test - 9-byte keys - 492.63 cycles/hash +Small key speed test - 10-byte keys - 499.95 cycles/hash +Small key speed test - 11-byte keys - 499.96 cycles/hash +Small key speed test - 12-byte keys - 346.25 cycles/hash +Small key speed test - 13-byte keys - 492.97 cycles/hash +Small key speed test - 14-byte keys - 501.68 cycles/hash +Small key speed test - 15-byte keys - 492.99 cycles/hash +Small key speed test - 16-byte keys - 351.51 cycles/hash +Small key speed test - 17-byte keys - 493.00 cycles/hash +Small key speed test - 18-byte keys - 501.00 cycles/hash +Small key speed test - 19-byte keys - 501.00 cycles/hash +Small key speed test - 20-byte keys - 357.06 cycles/hash +Small key speed test - 21-byte keys - 494.00 cycles/hash +Small key speed test - 22-byte keys - 494.24 cycles/hash +Small key speed test - 23-byte keys - 494.30 cycles/hash +Small key speed test - 24-byte keys - 371.20 cycles/hash +Small key speed test - 25-byte keys - 504.65 cycles/hash +Small key speed test - 26-byte keys - 510.14 cycles/hash +Small key speed test - 27-byte keys - 502.96 cycles/hash +Small key speed test - 28-byte keys - 370.09 cycles/hash +Small key speed test - 29-byte keys - 503.95 cycles/hash +Small key speed test - 30-byte keys - 503.20 cycles/hash +Small key speed test - 31-byte keys - 496.00 cycles/hash +Average 464.235 cycles/hash + +[[[ 'Hashmap' Speed Tests ]]] + +std::unordered_map +Init std HashMapTest: 912.966 cycles/op (102401 inserts, 1% deletions) +Running std HashMapTest: 708.351 cycles/op (16.0 stdv) + +greg7mdp/parallel-hashmap +Init fast HashMapTest: 1242.681 cycles/op (102401 inserts, 1% deletions) +Running fast HashMapTest: 608.669 cycles/op (6.6 stdv) ....... PASS + + diff --git a/doc/farsh32 b/doc/farsh32.txt similarity index 100% rename from doc/farsh32 rename to doc/farsh32.txt diff --git a/doc/farsh64 b/doc/farsh64.txt similarity index 100% rename from doc/farsh64 rename to doc/farsh64.txt diff --git a/doc/fasthash32 b/doc/fasthash32.txt similarity index 100% rename from doc/fasthash32 rename to doc/fasthash32.txt diff --git a/doc/fasthash64 b/doc/fasthash64.txt similarity index 100% rename from doc/fasthash64 rename to doc/fasthash64.txt diff --git a/doc/fibonacci b/doc/fibonacci.txt similarity index 100% rename from doc/fibonacci rename to doc/fibonacci.txt diff --git a/doc/fletcher2 b/doc/fletcher2.txt similarity index 100% rename from doc/fletcher2 rename to doc/fletcher2.txt diff --git a/doc/fletcher4 b/doc/fletcher4.txt similarity index 100% rename from doc/fletcher4 rename to doc/fletcher4.txt diff --git a/doc/floppsyhash b/doc/floppsyhash.txt similarity index 100% rename from doc/floppsyhash rename to doc/floppsyhash.txt diff --git a/doc/hasshe2 b/doc/hasshe2.txt similarity index 100% rename from doc/hasshe2 rename to doc/hasshe2.txt diff --git a/doc/jodyhash32 b/doc/jodyhash32.txt similarity index 100% rename from doc/jodyhash32 rename to doc/jodyhash32.txt diff --git a/doc/jodyhash64 b/doc/jodyhash64.txt similarity index 100% rename from doc/jodyhash64 rename to doc/jodyhash64.txt diff --git a/doc/lookup3 b/doc/lookup3.txt similarity index 100% rename from doc/lookup3 rename to doc/lookup3.txt diff --git a/doc/md5-128 b/doc/md5-128.txt similarity index 100% rename from doc/md5-128 rename to doc/md5-128.txt diff --git a/doc/md5_32a b/doc/md5_32a.txt similarity index 100% rename from doc/md5_32a rename to doc/md5_32a.txt diff --git a/doc/metrohash128 b/doc/metrohash128.txt similarity index 100% rename from doc/metrohash128 rename to doc/metrohash128.txt diff --git a/doc/metrohash128_1 b/doc/metrohash128_1.txt similarity index 100% rename from doc/metrohash128_1 rename to doc/metrohash128_1.txt diff --git a/doc/metrohash128_2 b/doc/metrohash128_2.txt similarity index 100% rename from doc/metrohash128_2 rename to doc/metrohash128_2.txt diff --git a/doc/metrohash128crc_1 b/doc/metrohash128crc_1.txt similarity index 100% rename from doc/metrohash128crc_1 rename to doc/metrohash128crc_1.txt diff --git a/doc/metrohash128crc_2 b/doc/metrohash128crc_2.txt similarity index 100% rename from doc/metrohash128crc_2 rename to doc/metrohash128crc_2.txt diff --git a/doc/metrohash64 b/doc/metrohash64.txt similarity index 100% rename from doc/metrohash64 rename to doc/metrohash64.txt diff --git a/doc/metrohash64_1 b/doc/metrohash64_1.txt similarity index 100% rename from doc/metrohash64_1 rename to doc/metrohash64_1.txt diff --git a/doc/metrohash64_2 b/doc/metrohash64_2.txt similarity index 100% rename from doc/metrohash64_2 rename to doc/metrohash64_2.txt diff --git a/doc/metrohash64crc_1 b/doc/metrohash64crc_1.txt similarity index 100% rename from doc/metrohash64crc_1 rename to doc/metrohash64crc_1.txt diff --git a/doc/metrohash64crc_2 b/doc/metrohash64crc_2.txt similarity index 100% rename from doc/metrohash64crc_2 rename to doc/metrohash64crc_2.txt diff --git a/doc/mirhash b/doc/mirhash.txt similarity index 100% rename from doc/mirhash rename to doc/mirhash.txt diff --git a/doc/mirhash32low b/doc/mirhash32low.txt similarity index 100% rename from doc/mirhash32low rename to doc/mirhash32low.txt diff --git a/doc/mirhashstrict b/doc/mirhashstrict.txt similarity index 100% rename from doc/mirhashstrict rename to doc/mirhashstrict.txt diff --git a/doc/mirhashstrict32low b/doc/mirhashstrict32low.txt similarity index 100% rename from doc/mirhashstrict32low rename to doc/mirhashstrict32low.txt diff --git a/doc/multiply_shift b/doc/multiply_shift.txt similarity index 100% rename from doc/multiply_shift rename to doc/multiply_shift.txt diff --git a/doc/pair_multiply_shift b/doc/pair_multiply_shift.txt similarity index 100% rename from doc/pair_multiply_shift rename to doc/pair_multiply_shift.txt diff --git a/doc/rmd128 b/doc/rmd128.txt similarity index 100% rename from doc/rmd128 rename to doc/rmd128.txt diff --git a/doc/rmd160 b/doc/rmd160.txt similarity index 100% rename from doc/rmd160 rename to doc/rmd160.txt diff --git a/doc/rmd256 b/doc/rmd256.txt similarity index 100% rename from doc/rmd256 rename to doc/rmd256.txt diff --git a/doc/sdbm b/doc/sdbm.txt similarity index 100% rename from doc/sdbm rename to doc/sdbm.txt diff --git a/doc/seahash b/doc/seahash.txt similarity index 100% rename from doc/seahash rename to doc/seahash.txt diff --git a/doc/seahash32low b/doc/seahash32low.txt similarity index 100% rename from doc/seahash32low rename to doc/seahash32low.txt diff --git a/doc/sha1-160 b/doc/sha1-160.txt similarity index 100% rename from doc/sha1-160 rename to doc/sha1-160.txt diff --git a/doc/sha1_32a b/doc/sha1_32a.txt similarity index 100% rename from doc/sha1_32a rename to doc/sha1_32a.txt diff --git a/doc/sha1ni b/doc/sha1ni.txt similarity index 100% rename from doc/sha1ni rename to doc/sha1ni.txt diff --git a/doc/sha1ni_32 b/doc/sha1ni_32.txt similarity index 100% rename from doc/sha1ni_32 rename to doc/sha1ni_32.txt diff --git a/doc/sha2-224 b/doc/sha2-224.txt similarity index 100% rename from doc/sha2-224 rename to doc/sha2-224.txt diff --git a/doc/sha2-224_64 b/doc/sha2-224_64.txt similarity index 100% rename from doc/sha2-224_64 rename to doc/sha2-224_64.txt diff --git a/doc/sha2-256 b/doc/sha2-256.txt similarity index 100% rename from doc/sha2-256 rename to doc/sha2-256.txt diff --git a/doc/sha2-256_64 b/doc/sha2-256_64.txt similarity index 100% rename from doc/sha2-256_64 rename to doc/sha2-256_64.txt diff --git a/doc/sha2ni-256 b/doc/sha2ni-256.txt similarity index 100% rename from doc/sha2ni-256 rename to doc/sha2ni-256.txt diff --git a/doc/sha2ni-256_64 b/doc/sha2ni-256_64.txt similarity index 100% rename from doc/sha2ni-256_64 rename to doc/sha2ni-256_64.txt diff --git a/doc/sha3-256 b/doc/sha3-256.txt similarity index 100% rename from doc/sha3-256 rename to doc/sha3-256.txt diff --git a/doc/sha3-256_64 b/doc/sha3-256_64.txt similarity index 100% rename from doc/sha3-256_64 rename to doc/sha3-256_64.txt diff --git a/doc/sumhash b/doc/sumhash.txt similarity index 100% rename from doc/sumhash rename to doc/sumhash.txt diff --git a/doc/sumhash32 b/doc/sumhash32.txt similarity index 100% rename from doc/sumhash32 rename to doc/sumhash32.txt diff --git a/doc/superfast b/doc/superfast.txt similarity index 100% rename from doc/superfast rename to doc/superfast.txt diff --git a/doc/t1ha0_32be b/doc/t1ha0_32be.txt similarity index 100% rename from doc/t1ha0_32be rename to doc/t1ha0_32be.txt diff --git a/doc/t1ha0_32le b/doc/t1ha0_32le.txt similarity index 100% rename from doc/t1ha0_32le rename to doc/t1ha0_32le.txt diff --git a/doc/t1ha0_aes_avx1 b/doc/t1ha0_aes_avx1.txt similarity index 100% rename from doc/t1ha0_aes_avx1 rename to doc/t1ha0_aes_avx1.txt diff --git a/doc/t1ha0_aes_avx2 b/doc/t1ha0_aes_avx2.txt similarity index 100% rename from doc/t1ha0_aes_avx2 rename to doc/t1ha0_aes_avx2.txt diff --git a/doc/t1ha0_aes_noavx b/doc/t1ha0_aes_noavx.txt similarity index 100% rename from doc/t1ha0_aes_noavx rename to doc/t1ha0_aes_noavx.txt diff --git a/doc/t1ha1_64be b/doc/t1ha1_64be.txt similarity index 100% rename from doc/t1ha1_64be rename to doc/t1ha1_64be.txt diff --git a/doc/t1ha1_64le b/doc/t1ha1_64le.txt similarity index 100% rename from doc/t1ha1_64le rename to doc/t1ha1_64le.txt diff --git a/doc/t1ha2_atonce b/doc/t1ha2_atonce.txt similarity index 100% rename from doc/t1ha2_atonce rename to doc/t1ha2_atonce.txt diff --git a/doc/t1ha2_atonce128 b/doc/t1ha2_atonce128.txt similarity index 100% rename from doc/t1ha2_atonce128 rename to doc/t1ha2_atonce128.txt diff --git a/doc/t1ha2_stream b/doc/t1ha2_stream.txt similarity index 100% rename from doc/t1ha2_stream rename to doc/t1ha2_stream.txt diff --git a/doc/t1ha2_stream128 b/doc/t1ha2_stream128.txt similarity index 100% rename from doc/t1ha2_stream128 rename to doc/t1ha2_stream128.txt diff --git a/doc/table.html b/doc/table.html index 003b804c..f4f070c2 100644 --- a/doc/table.html +++ b/doc/table.html @@ -29,7 +29,7 @@

SMhasher

-donothing32 +donothing32 14924689.47 6.00 - @@ -37,7 +37,7 @@

SMhasher

test NOP -donothing64 +donothing64 14942317.78 6.00 - @@ -45,7 +45,7 @@

SMhasher

test NOP -donothing128 +donothing128 14943678.61 6.00 - @@ -53,7 +53,7 @@

SMhasher

test NOP -NOP_OAAT_read64 +NOP_OAAT_read64 29794.83 35.50 - @@ -61,7 +61,7 @@

SMhasher

test NOP -BadHash +BadHash 522.75 96.39 - @@ -69,7 +69,7 @@

SMhasher

test FAIL -sumhash +sumhash 7135.41 31.14 - @@ -77,7 +77,7 @@

SMhasher

test FAIL -sumhash32 +sumhash32 23873.87 22.49 - @@ -85,7 +85,7 @@

SMhasher

test FAIL -multiply_shift +multiply_shift 4909.57 45.28 too slow @@ -93,7 +93,7 @@

SMhasher

fails all tests -pair_multiply_shift +pair_multiply_shift 13604.46 31.71 too slow @@ -109,7 +109,7 @@

SMhasher

-crc32 +crc32 392.05 130.08 199.87 (3) @@ -117,7 +117,7 @@

SMhasher

insecure, 8590x collisions, distrib -md5_32a +md5_32a 351.96 670.99 863.30 (23) @@ -125,7 +125,7 @@

SMhasher

8590x collisions, distrib -sha1_32a +sha1_32a 353.03 1385.80 1759.94 (5) @@ -133,7 +133,7 @@

SMhasher

collisions, 36.6% distrib -md5-128 +md5-128 317.78 730.30 830.69 (7) @@ -141,7 +141,7 @@

SMhasher

-sha1-160 +sha1-160 364.95 1470.55 1776.73 (8) @@ -149,7 +149,7 @@

SMhasher

-sha2-224 +sha2-224 147.13 1354.81 1575.09 (26) @@ -157,7 +157,7 @@

SMhasher

-sha2-224_64 +sha2-224_64 147.60 1360.10 1582.71 (26) @@ -165,7 +165,7 @@

SMhasher

-sha2-256 +sha2-256 147.80 1374.90 1562.15 (21) @@ -173,7 +173,7 @@

SMhasher

Moment Chi2 4 -sha2-256_64 +sha2-256_64 148.01 1376.34 1627.12 (10) @@ -181,7 +181,7 @@

SMhasher

Moment Chi2 7 -sha1ni +sha1ni 2019.96 135.84 564.40 (6) @@ -189,7 +189,7 @@

SMhasher

insecure,sanity, Permutation, Zeroes, amd epyc only -sha1ni_32 +sha1ni_32 2019.94 136.82 589.46 (1) @@ -197,7 +197,7 @@

SMhasher

insecure,sanity, Permutation, Zeroes, TwoBytes, amd epyc only -sha2ni-256 +sha2ni-256 1906.77 145.47 603.08 (22) @@ -205,7 +205,7 @@

SMhasher

insecure,sanity, Permutation, Zeroes, amd epyc only -sha2ni-256_64 +sha2ni-256_64 1920.36 145.47 603.08 (2) @@ -213,7 +213,7 @@

SMhasher

insecure,sanity, Permutation, Zeroes, TwoBytes, amd epyc only -blake3_c +blake3_c 1233.40 360.68 524.40 (4) @@ -221,7 +221,7 @@

SMhasher

Moment Chi2, no 32bit portability -rmd128 +rmd128 332.78 672.35 903.43 (13) @@ -229,7 +229,7 @@

SMhasher

-rmd160 +rmd160 202.16 1045.79 1199.55 (17) @@ -237,7 +237,7 @@

SMhasher

-rmd256 +rmd256 356.57 638.30 815.39 (16) @@ -245,7 +245,7 @@

SMhasher

-blake2s-128 +blake2s-128 295.30 698.09 1182.72 (18) @@ -253,7 +253,7 @@

SMhasher

-blake2s-160 +blake2s-160 215.01 1026.74 1225.15 (21) @@ -261,7 +261,7 @@

SMhasher

-blake2s-224 +blake2s-224 207.06 1063.86 1195.43 (20) @@ -269,7 +269,7 @@

SMhasher

-blake2s-256 +blake2s-256 215.28 1014.88 1169.98 (16) @@ -277,7 +277,7 @@

SMhasher

-blake2s-256_64 +blake2s-256_64 211.52 1044.22 1212.51 (17) @@ -285,7 +285,7 @@

SMhasher

-blake2b-160 +blake2b-160 356.08 1236.84 1408.02 (21) @@ -293,7 +293,7 @@

SMhasher

-blake2b-224 +blake2b-224 356.59 1228.50 1438.52 (22) @@ -301,7 +301,7 @@

SMhasher

-blake2b-256 +blake2b-256 355.97 1232.22 1393.08 (16) @@ -309,7 +309,7 @@

SMhasher

Sparse high 32-bit -blake2b-256_64 +blake2b-256_64 356.97 1222.76 1392.40 (21) @@ -317,7 +317,7 @@

SMhasher

-sha3-256 +sha3-256 100.58 3877.18 4430.89 (43) @@ -325,7 +325,7 @@

SMhasher

-sha3-256_64 +sha3-256_64 100.57 3909.00 4405.76 (40) @@ -333,7 +333,7 @@

SMhasher

-hasshe2 +hasshe2 2357.32 76.10 172.41 (3) @@ -341,7 +341,7 @@

SMhasher

insecure, Permutation,TwoBytes,Zeroes,Seed -crc32_hw +crc32_hw 6292.63 30.38 204.19 (18) @@ -349,7 +349,7 @@

SMhasher

insecure, 100% bias, collisions, distrib, machine-specific (x86 SSE4.2) -crc32_hw1 +crc32_hw1 23382.53 36.84 197.39 (20) @@ -357,7 +357,7 @@

SMhasher

insecure, 100% bias, collisions, distrib, machine-specific (x86 SSE4.2) -crc64_hw +crc64_hw 8387.01 29.96 161.44 (13) @@ -365,7 +365,7 @@

SMhasher

insecure, 100% bias, collisions, distrib, machine-specific (x64 SSE4.2) -crc32_pclmul +crc32_pclmul 1932125.24 6.50 - @@ -373,7 +373,7 @@

SMhasher

insecure, 100% bias, collisions, distrib, machine-specific (x86 PCLMUL) -FastestHash +FastestHash 14635755.30 16.04 357.77 (3) @@ -381,7 +381,7 @@

SMhasher

insecure, zeros, fails all tests -fibonacci +fibonacci 9462.17 33.52 774.87 (14) @@ -389,7 +389,7 @@

SMhasher

zeros, fails all tests -FNV1a +FNV1a 780.53 69.65 197.06 (20) @@ -397,7 +397,7 @@

SMhasher

zeros, fails all tests -FNV1A_Totenschiff +FNV1A_Totenschiff 6235.86 36.56 214.61 (18) @@ -405,7 +405,7 @@

SMhasher

zeros, fails all tests -FNV1A_Pippip_Yurii +FNV1A_Pippip_Yurii 6238.08 37.22 218.06 (25) @@ -413,7 +413,7 @@

SMhasher

sanity, fails all tests -FNV1a_YT +FNV1a_YT 9618.28 28.26 192.33 (18) @@ -421,7 +421,7 @@

SMhasher

fails all tests -FNV2 +FNV2 6244.26 38.25 168.46 (15) @@ -429,7 +429,7 @@

SMhasher

fails all tests -FNV64 +FNV64 791.82 69.82 184.87 (19) @@ -437,7 +437,7 @@

SMhasher

fails all tests -fletcher2 +fletcher2 11809.88 26.85 321.91 (13) @@ -445,7 +445,7 @@

SMhasher

fails all tests -fletcher4 +fletcher4 11973.55 26.94 324.53 (12) @@ -453,7 +453,7 @@

SMhasher

fails all tests -bernstein +bernstein 791.83 67.15 200.11 (17) @@ -461,7 +461,7 @@

SMhasher

fails all tests -sdbm +sdbm 785.84 67.02 209.44 (17) @@ -469,7 +469,7 @@

SMhasher

fails all tests -x17 +x17 522.46 97.51 214.03 (18) @@ -477,7 +477,7 @@

SMhasher

99.98% bias, fails all tests -JenkinsOOAT +JenkinsOOAT 446.57 142.43 245.34 (20) @@ -485,7 +485,7 @@

SMhasher

53.5% bias, fails all tests -JenkinsOOAT_perl +JenkinsOOAT_perl 445.69 118.69 222.62 (18) @@ -493,7 +493,7 @@

SMhasher

1.5-11.5% bias, 7.2x collisions, LongNeighbors -MicroOAAT +MicroOAAT 950.84 62.23 233.94 (19) @@ -501,7 +501,7 @@

SMhasher

100% bias, distrib -VHASH_32 +VHASH_32 9502.36 86.97 273.67 (8) @@ -509,7 +509,7 @@

SMhasher

sanity, Seed, MomentChi2 -VHASH_64 +VHASH_64 9449.24 86.97 253.42 (9) @@ -517,7 +517,7 @@

SMhasher

sanity, Seed, Sparse -farsh32 +farsh32 14053.09 74.29 245.33 (3) @@ -525,7 +525,7 @@

SMhasher

insecure: AppendedZeroes, collisions+bias, MomentChi2, LongNeighbors -farsh64 +farsh64 7216.29 130.30 302.44 (3) @@ -533,7 +533,7 @@

SMhasher

insecure: AppendedZeroes, collisions+bias, MomentChi2, LongNeighbors -jodyhash32 +jodyhash32 1386.76 46.13 232.12 (21) @@ -541,7 +541,7 @@

SMhasher

bias, collisions, distr, LongNeighbors -jodyhash64 +jodyhash64 2765.84 40.89 222.41 (20) @@ -549,7 +549,7 @@

SMhasher

bias, collisions, distr, LongNeighbors -lookup3 +lookup3 1702.13 48.25 243.90 (19) @@ -557,7 +557,7 @@

SMhasher

28% bias, collisions, 30% distr -superfast +superfast 1899.70 54.19 240.49 (19) @@ -565,7 +565,7 @@

SMhasher

91% bias, 5273.01x collisions, 37% distr, BIC -MurmurOAAT +MurmurOAAT 437.03 117.00 236.62 (19) @@ -573,7 +573,7 @@

SMhasher

collisions, 99.998% distr., BIC, LongNeighbors -Crap8 +Crap8 3060.17 35.25 242.59 (20) @@ -581,7 +581,7 @@

SMhasher

2.42% bias, collisions, 2% distrib -Murmur2 +Murmur2 3032.69 41.97 233.68 (19) @@ -589,7 +589,7 @@

SMhasher

1.7% bias, 81x coll, 1.7% distrib, BIC -Murmur2A +Murmur2A 3033.56 46.63 227.70 (20) @@ -597,7 +597,7 @@

SMhasher

12.7% bias, LongNeighbors -Murmur2B +Murmur2B 4728.94 47.90 192.82 (18) @@ -605,7 +605,7 @@

SMhasher

1.8% bias, collisions, 3.4% distrib, BIC -Murmur2C +Murmur2C 3817.99 47.67 207.53 (18) @@ -613,7 +613,7 @@

SMhasher

91% bias, collisions, distr, BIC, LongNeighbors -Murmur3A +Murmur3A 2347.90 51.38 237.58 (19) @@ -621,7 +621,7 @@

SMhasher

Moment Chi2 69 -PMurHash32 +PMurHash32 2281.97 58.65 259.59 (20) @@ -629,7 +629,7 @@

SMhasher

Moment Chi2 69 -Murmur3C +Murmur3C 3093.46 68.53 256.49 (19) @@ -637,7 +637,7 @@

SMhasher

LongNeighbors, DiffDist -PMPML_32 +PMPML_32 6516.19 52.60 227.47 (8) @@ -645,7 +645,7 @@

SMhasher

Avalanche >512, unseeded: Seed, MomentChi2 -PMPML_64 +PMPML_64 8119.83 61.49 186.24 (4) @@ -653,7 +653,7 @@

SMhasher

unseeded: Seed, MomentChi2 -xxHash32 +xxHash32 5868.40 49.08 222.09 (21) @@ -661,7 +661,7 @@

SMhasher

LongNeighbors, collisions with 4bit diff, MomentChi2 220 -metrohash64_1 +metrohash64_1 9274.60 50.85 201.37 (19) @@ -669,7 +669,7 @@

SMhasher

LongNeighbors, BIC, MomentChi2 -metrohash64_2 +metrohash64_2 9281.99 51.04 191.44 (20) @@ -677,7 +677,7 @@

SMhasher

LongNeighbors -metrohash64crc_1 +metrohash64crc_1 13641.79 56.19 193.28 (19) @@ -685,7 +685,7 @@

SMhasher

cyclic collisions 8 byte, BIC, MomentChi2, machine-specific (x64 SSE4.2) -metrohash64crc_2 +metrohash64crc_2 13550.77 56.17 204.84 (18) @@ -693,7 +693,7 @@

SMhasher

cyclic collisions 8 byte, BIC, machine-specific (x64 SSE4.2) -metrohash128_1 +metrohash128_1 9263.64 79.71 240.70 (20) @@ -701,7 +701,7 @@

SMhasher

LongNeighbors -metrohash128_2 +metrohash128_2 9060.39 79.74 240.46 (20) @@ -709,7 +709,7 @@

SMhasher

LongNeighbors -cmetrohash64_1o +cmetrohash64_1o 8851.32 50.59 193.19 (18) @@ -717,7 +717,7 @@

SMhasher

LongNeighbors, MomentChi2 -cmetrohash64_1 +cmetrohash64_1 9074.37 50.92 201.33 (18) @@ -725,7 +725,7 @@

SMhasher

LongNeighbors, BIC, MomentChi2 -cmetrohash64_2 +cmetrohash64_2 9302.98 51.09 194.04 (18) @@ -733,7 +733,7 @@

SMhasher

LongNeighbors -City64noSeed +City64noSeed 8873.07 38.70 171.57 (4) @@ -741,7 +741,7 @@

SMhasher

Avalanche, Sparse, TwoBytes, MomentChi2, Seed -City64 +City64 9213.05 55.52 200.24 (2) @@ -749,7 +749,7 @@

SMhasher

Sparse, TwoBytes -aesnihash +aesnihash 2963.39 71.24 217.73 (3) @@ -757,7 +757,7 @@

SMhasher

fails most tests, machine-specific (x64 AES-NI) -falkhash +falkhash 20374.98 169.84 328.42 (5) @@ -765,7 +765,7 @@

SMhasher

LongNeighbors, machine-specific (x64 AES-NI) -t1ha1_64le +t1ha1_64le 9541.33 39.33 239.04 (16) @@ -773,7 +773,7 @@

SMhasher

Avalanche -t1ha1_64be +t1ha1_64be 6848.76 41.08 230.22 (17) @@ -781,7 +781,7 @@

SMhasher

Avalanche -t1ha0_32le +t1ha0_32le 4913.74 55.00 233.39 (18) @@ -789,7 +789,7 @@

SMhasher

Sparse, LongNeighbors -t1ha0_32be +t1ha0_32be 4241.68 55.12 236.50 (18) @@ -797,7 +797,7 @@

SMhasher

Sparse, LongNeighbors -t1ha2_stream +t1ha2_stream 8558.73 93.45 305.03 (16) @@ -805,7 +805,7 @@

SMhasher

Sparse, Permutation, LongNeighbors -t1ha2_stream128 +t1ha2_stream128 8846.52 117.19 270.95 (2) @@ -813,7 +813,7 @@

SMhasher

Sparse, Permutation, LongNeighbors -xxh3 +xxh3 16377.47 37.20 179.88 (1) @@ -821,7 +821,7 @@

SMhasher

Moment Chi2 14974, BIC -xxh3low +xxh3low 16403.22 37.19 184.18 (2) @@ -829,7 +829,7 @@

SMhasher

Moment Chi2 1.8e+9 ! -xxh128 +xxh128 15117.76 44.70 178.72 (1) @@ -837,7 +837,7 @@

SMhasher

Moment Chi2 14974 -xxh128low +xxh128low 15109.04 38.98 174.91 (3) @@ -853,7 +853,7 @@

SMhasher

-tifuhash_64 +tifuhash_64 34.72 1583.06 1135.79 (7) @@ -861,7 +861,7 @@

SMhasher

-floppsyhash_64 +floppsyhash_64 191.95 450.93 821.11 (152) @@ -869,7 +869,7 @@

SMhasher

-chaskey +chaskey 735.85 168.05 336.07 (4) @@ -877,7 +877,7 @@

SMhasher

-SipHash +SipHash 958.78 141.84 278.15 (3) @@ -885,7 +885,7 @@

SMhasher

-HalfSipHash +HalfSipHash 741.59 122.25 256.22 (20) @@ -893,7 +893,7 @@

SMhasher

zeroes -beamsplitter +beamsplitter 551.55 914.29 1005.56 (14) @@ -901,7 +901,7 @@

SMhasher

-GoodOAAT +GoodOAAT 1052.90 70.80 208.00 (3) @@ -909,7 +909,7 @@

SMhasher

-SipHash13 +SipHash13 1762.44 104.61 304.84 (17) @@ -917,7 +917,7 @@

SMhasher

0.9% bias -TSip +TSip 3346.72 60.02 203.82 (5) @@ -925,7 +925,7 @@

SMhasher

!msvc -seahash +seahash 4529.38 65.58 240.34 (7) @@ -933,7 +933,7 @@

SMhasher

!msvc -seahash32low +seahash32low 4524.65 65.60 253.50 (3) @@ -941,7 +941,7 @@

SMhasher

!msvc -clhash +clhash 4405.28 85.35 288.20 (14) @@ -949,7 +949,7 @@

SMhasher

machine-specific (x64 SSE4.2) -HighwayHash64 +HighwayHash64 6239.64 98.65 263.94 (4) @@ -957,7 +957,7 @@

SMhasher

-BEBB4185 +BEBB4185 2655.75 241.48 420.58 (7) @@ -965,7 +965,7 @@

SMhasher

-Murmur3F +Murmur3F 5076.20 51.66 222.39 (18) @@ -973,7 +973,7 @@

SMhasher

-fasthash32 +fasthash32 4658.24 50.50 181.96 (2) @@ -981,7 +981,7 @@

SMhasher

-fasthash64 +fasthash64 4657.64 47.71 168.22 (3) @@ -989,7 +989,7 @@

SMhasher

Moment Chi2 5159 ! -MUM +MUM 6890.75 39.90 174.94 (3) @@ -997,7 +997,7 @@

SMhasher

machine-specific (32/64 differs) -MUMlow +MUMlow 6893.98 46.02 191.55 (3) @@ -1005,7 +1005,7 @@

SMhasher

-mirhash +mirhash 5453.50 42.31 163.35 (2) @@ -1013,7 +1013,7 @@

SMhasher

LongNeighbors, machine-specific (32/64 differs) -mirhash32low +mirhash32low 5452.48 42.31 190.92 (2) @@ -1021,7 +1021,7 @@

SMhasher

LongNeighbors, machine-specific (32/64 differs) -mirhashstrict +mirhashstrict 2217.70 65.39 175.38 (3) @@ -1029,7 +1029,7 @@

SMhasher

-mirhashstrict32low +mirhashstrict32low 2217.87 64.72 188.44 (4) @@ -1037,7 +1037,7 @@

SMhasher

MomentChi2 9 -City32 +City32 3833.52 52.97 211.69 (4) @@ -1045,7 +1045,7 @@

SMhasher

-City64low +City64low 9209.88 63.55 274.62 (17) @@ -1053,7 +1053,7 @@

SMhasher

-City128 +City128 9747.33 77.22 269.02 (14) @@ -1061,7 +1061,7 @@

SMhasher

-CityCrc128 +CityCrc128 12958.29 77.31 267.14 (17) @@ -1069,7 +1069,7 @@

SMhasher

-FarmHash32 +FarmHash32 16663.96 63.67 265.35 (19) @@ -1077,7 +1077,7 @@

SMhasher

machine-specific (x64 SSE4/AVX) -FarmHash64 +FarmHash64 8476.56 65.05 251.81 (17) @@ -1085,7 +1085,7 @@

SMhasher

-FarmHash128 +FarmHash128 9814.32 82.06 229.38 (4) @@ -1093,7 +1093,7 @@

SMhasher

-farmhash32_c +farmhash32_c 17335.51 63.77 277.75 (18) @@ -1101,7 +1101,7 @@

SMhasher

machine-specific (x64 SSE4/AVX) -farmhash64_c +farmhash64_c 8335.98 77.01 266.15 (18) @@ -1109,7 +1109,7 @@

SMhasher

-farmhash128_c +farmhash128_c 10158.20 98.80 232.00 (2) @@ -1117,7 +1117,7 @@

SMhasher

-metrohash64 +metrohash64 9490.26 49.84 150.49 (3) @@ -1125,7 +1125,7 @@

SMhasher

LongNeighbors -metrohash128 +metrohash128 9450.78 78.18 215.79 (2) @@ -1133,7 +1133,7 @@

SMhasher

-metrohash128crc_1 +metrohash128crc_1 13668.29 85.94 249.99 (18) @@ -1141,7 +1141,7 @@

SMhasher

machine-specific (x64 SSE4.2) -metrohash128crc_2 +metrohash128crc_2 13600.83 85.92 239.28 (20) @@ -1149,7 +1149,7 @@

SMhasher

machine-specific (x64 SSE4.2) -xxHash64 +xxHash64 8719.19 59.22 210.40 (16) @@ -1157,7 +1157,7 @@

SMhasher

-Spooky32 +Spooky32 9570.40 70.27 250.23 (18) @@ -1165,7 +1165,7 @@

SMhasher

-Spooky64 +Spooky64 9603.18 70.19 231.73 (17) @@ -1173,7 +1173,7 @@

SMhasher

-Spooky128 +Spooky128 9865.67 70.84 185.64 (2) @@ -1181,7 +1181,7 @@

SMhasher

-t1ha2_atonce +t1ha2_atonce 8192.03 48.48 230.46 (14) @@ -1189,7 +1189,7 @@

SMhasher

-t1ha2_atonce128 +t1ha2_atonce128 8382.53 64.15 199.63 (4) @@ -1197,7 +1197,7 @@

SMhasher

LongNeighbors -t1ha0_aes_noavx +t1ha0_aes_noavx 21782.86 48.17 238.14 (18) @@ -1205,7 +1205,7 @@

SMhasher

LongNeighbors, machine-specific (x86 AES-NI) -t1ha0_aes_avx1 +t1ha0_aes_avx1 22714.85 48.12 226.52 (16) @@ -1213,7 +1213,7 @@

SMhasher

LongNeighbors, machine-specific (x64 AVX) -t1ha0_aes_avx2 +t1ha0_aes_avx2 22345.33 44.38 556.47 (89) @@ -1221,7 +1221,7 @@

SMhasher

LongNeighbors, machine-specific (x64 AVX2) -MeowHash +MeowHash 36695.65 58.09 233.81 (3) @@ -1229,7 +1229,7 @@

SMhasher

Sparse low32, machine-specific (x64 AES-NI) -MeowHash32low +MeowHash32low 17247.34 87.32 245.98 (3) @@ -1237,7 +1237,7 @@

SMhasher

Sparse, machine-specific (x64 AES-NI) -wyhash +wyhash 12063.37 38.11 208.49 (3) @@ -1245,7 +1245,7 @@

SMhasher

-wyhash32low +wyhash32low 12049.79 37.95 222.17 (4) diff --git a/doc/tifuhash_64 b/doc/tifuhash_64.txt similarity index 100% rename from doc/tifuhash_64 rename to doc/tifuhash_64.txt diff --git a/doc/wyhash b/doc/wyhash.txt similarity index 100% rename from doc/wyhash rename to doc/wyhash.txt diff --git a/doc/wyhash32low b/doc/wyhash32low.txt similarity index 100% rename from doc/wyhash32low rename to doc/wyhash32low.txt diff --git a/doc/x17 b/doc/x17.txt similarity index 100% rename from doc/x17 rename to doc/x17.txt diff --git a/doc/xxHash32 b/doc/xxHash32.txt similarity index 100% rename from doc/xxHash32 rename to doc/xxHash32.txt diff --git a/doc/xxHash64 b/doc/xxHash64.txt similarity index 100% rename from doc/xxHash64 rename to doc/xxHash64.txt diff --git a/doc/xxh128 b/doc/xxh128.txt similarity index 100% rename from doc/xxh128 rename to doc/xxh128.txt diff --git a/doc/xxh128low b/doc/xxh128low.txt similarity index 100% rename from doc/xxh128low rename to doc/xxh128low.txt diff --git a/doc/xxh3 b/doc/xxh3.txt similarity index 100% rename from doc/xxh3 rename to doc/xxh3.txt diff --git a/doc/xxh3low b/doc/xxh3low.txt similarity index 100% rename from doc/xxh3low rename to doc/xxh3low.txt diff --git a/fixupdocspeeds.pl b/fixupdocspeeds.pl index a0b422c4..dac45973 100755 --- a/fixupdocspeeds.pl +++ b/fixupdocspeeds.pl @@ -40,8 +40,8 @@ sub fixup { my ($n,$speed,$hash,$fn) = @_; return unless $n; return if !defined($speed) && !defined($hash); - return if "doc/$n" eq $fn; - open(my $I, "<", "doc/$n") or die "open doc/$n $!"; + return if "doc/$n.txt" eq $fn; + open(my $I, "<", "doc/$n.txt") or die "open doc/$n.txt $!"; open(my $O, ">", "doc/$n.new") or die "open doc/$n.new $!"; my $found; while (<$I>) { @@ -66,5 +66,5 @@ sub fixup { } close $I; close $O; - mv ("doc/$n.new", "doc/$n") if $found; + mv ("doc/$n.new", "doc/$n.txt") if $found; } diff --git a/fixupdoctests.pl b/fixupdoctests.pl index c4993f85..1fa069c3 100755 --- a/fixupdoctests.pl +++ b/fixupdoctests.pl @@ -56,8 +56,8 @@ sub fixup { my ($n,$r,$fn) = @_; return unless $n; return if !%$r; - return if "doc/$n" eq $fn; - open(my $I, "<", "doc/$n") or die "open doc/$n $!"; + return if "doc/$n.txt" eq $fn; + open(my $I, "<", "doc/$n.txt") or die "open doc/$n.txt $!"; open(my $O, ">", "doc/$n.new") or die "open doc/$n.new $!"; my $found; my %r = %$r; @@ -66,7 +66,7 @@ sub fixup { # search for $n in doc if (/^--- Testing /) { if ($found && %r) { - print STDERR "tests not in doc/$n:\n", join(" ",sort keys %r), "\n"; + print STDERR "tests not in doc/$n.txt:\n", join(" ",sort keys %r), "\n"; } $found = /^--- Testing $n /; } @@ -97,9 +97,9 @@ sub fixup { } } if (%r) { - print STDERR "finally tests not found in doc/$n:\n", join(" ",sort keys %r), "\n"; + print STDERR "finally tests not found in doc/$n.txt:\n", join(" ",sort keys %r), "\n"; } close $I; close $O; - mv ("doc/$n.new", "doc/$n") if $found; + mv ("doc/$n.new", "doc/$n.txt") if $found; } diff --git a/speed.sh b/speed.sh index 9c911b12..42cd9e2f 100755 --- a/speed.sh +++ b/speed.sh @@ -1,3 +1,3 @@ #!/bin/sh LOG=${1:-log.speed} -perl -ne'/^--- Testing ([\w-]+) "/ && print "| [$1](doc/$1)".(" "x(36-(2*length($1)))); /^Average.+ - +([\d\.]+) MiB\/sec/ && printf(" | %12.2f",$1); /^Average +(\d.*)cycles\/hash/ && printf(" | %8.2f",$1); /^Running fast HashMapTest: +(\d\S+) cycles\/op \((\d.+) stdv\)/ && printf(" | %6.2f (%.0f) |\n",$1,$2);' $LOG +perl -ne'/^--- Testing ([\w-]+) "/ && print "| [$1](doc/$1.txt)".(" "x(36-(2*length($1)))); /^Average.+ - +([\d\.]+) MiB\/sec/ && printf(" | %12.2f",$1); /^Average +(\d.*)cycles\/hash/ && printf(" | %8.2f",$1); /^Running fast HashMapTest: +(\d\S+) cycles\/op \((\d.+) stdv\)/ && printf(" | %6.2f (%.0f) |\n",$1,$2);' $LOG diff --git a/split.pl b/split.pl index a8188dac..2f6f5bb8 100755 --- a/split.pl +++ b/split.pl @@ -6,7 +6,7 @@ for $match (split(/-------------------------------------------------------------------------------/)) { $match =~ m/^--- Testing (\w+)/m; unless ($seen{$1}) { - open(O, ">doc/$1") and print "doc/$1\n"; + open(O, ">doc/$1.txt") and print "doc/$1.txt\n"; $seen{$1}++; print O $match; close(O); diff --git a/testall.sh b/testall.sh index 52fe5dc6..a5e80e7e 100755 --- a/testall.sh +++ b/testall.sh @@ -3,4 +3,4 @@ echo "rather use: ./testspeed.sh; testpar.sh, or even testpar1.sh/testpar2.sh on echo "./testall.sh will need 1.5-4 days to complete (~20m per hash)" make -C build test -f log.hashes && mv log.hashes log.hashes.bak -(for g in `build/SMHasher --listnames`; do build/SMHasher $g | tee doc/$g; done) | tee log.hashes +(for g in `build/SMHasher --listnames`; do build/SMHasher $g | tee doc/$g.txt; done) | tee log.hashes diff --git a/testextra.sh b/testextra.sh index ade2753b..fdf18350 100755 --- a/testextra.sh +++ b/testextra.sh @@ -1,3 +1,3 @@ #!/bin/sh make -C build -cat extra.lst | parallel -j4 --bar 'build/SMHasher --extra {} >doc/{}' +cat extra.lst | parallel -j4 --bar 'build/SMHasher --extra {} >doc/{}.txt' diff --git a/testgood-but-poor.sh b/testgood-but-poor.sh index 55318f51..8b70a6b9 100755 --- a/testgood-but-poor.sh +++ b/testgood-but-poor.sh @@ -2,12 +2,12 @@ make -C build echo "marked GOOD but FAIL (ignore HashMapTest and LongNeighbors)" for f in `build/SMHasher --list | perl -alne 'print $F[0] if /GOOD$/'`; do - grep 'FAIL' doc/$f && echo $f; done + grep 'FAIL' doc/$f.txt && echo $f; done echo "marked GOOD but !!!!" for f in `build/SMHasher --list | perl -alne 'print $F[0] if /GOOD$/'`; do - grep -q '!!!!' doc/$f && echo $f; done + grep -q '!!!!' doc/$f.txt && echo $f; done echo "marked GOOD but POOR in doc" for f in `build/SMHasher --list | perl -alne 'print $F[0] if /GOOD$/'`; do - grep 'POOR' doc/$f; done + grep 'POOR' doc/$f.txt; done diff --git a/testpar-good.sh b/testpar-good.sh index 5b870207..77da221e 100755 --- a/testpar-good.sh +++ b/testpar-good.sh @@ -1,4 +1,4 @@ #!/bin/sh make -C build build/SMHasher --list | perl -alne 'print $F[0] if /GOOD$/' | \ - parallel -j4 --bar 'build/SMHasher {} >doc/{}' + parallel -j4 --bar 'build/SMHasher {} >doc/{}.txt' diff --git a/testpoor-but-good.sh b/testpoor-but-good.sh index 7085a25e..cdee4843 100755 --- a/testpoor-but-good.sh +++ b/testpoor-but-good.sh @@ -3,8 +3,8 @@ make -C build echo "marked POOR but no FAIL" for f in `build/SMHasher --list | perl -alne 'print $F[0] if /POOR$/'`; do - grep -q FAIL doc/$f || echo "no FAIL $f"; done + grep -q FAIL doc/$f.txt || echo "no FAIL $f"; done echo "marked POOR labeled as GOOD in doc" for f in `build/SMHasher --list | perl -alne 'print $F[0] if /POOR$/'`; do - grep GOOD doc/$f; done + grep GOOD doc/$f.txt; done