From 7454c1f69b684bc3296e24457ed14f897354277f Mon Sep 17 00:00:00 2001 From: Reini Urban Date: Sat, 16 Sep 2023 10:48:34 +0200 Subject: [PATCH] add rust FxHash results unseeded and very poor. collisions everywhere --- README.md | 4 +- doc/FxHash32.txt | 108 ++++++++++ doc/FxHash64.txt | 518 +++++++++++++++++++++++++++++++++++++++++++++++ main.cpp | 4 +- 4 files changed, 630 insertions(+), 4 deletions(-) create mode 100644 doc/FxHash32.txt create mode 100644 doc/FxHash64.txt diff --git a/README.md b/README.md index 2c0576f5..e4082f51 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,8 @@ SMhasher | [asconhashv12_64](doc/asconhashv12_64.txt) | 159.68 | 386.90 | 480.86 (4) |6490 | | | [sha3-256](doc/sha3-256.txt) | 100.58 | 3877.18 |4159.79 (37)| | PerlinNoise | | [sha3-256_64](doc/sha3-256_64.txt) | 100.57 | 3909.00 |4174.63 (16)| | PerlinNoise | -| [FxHash32](doc/FxHash32.txt) | 3080.54 | 29.35 | 401.61 (2) | | rust, fixed seed | -| [FxHash64](doc/FxHash64.txt) | 0.00 | 0.00 | 0.00 (0) | | rust, fixed seed | +| [FxHash32](doc/FxHash32.txt) | 3080.54 | 29.35 | 401.61 (2) | | rust, fixed seed, fails all tests | +| [FxHash64](doc/FxHash64.txt) | 6140.18 | 24.03 | 397.79 (14)| | rust, fixed seed, fails all tests | | [hasshe2](doc/hasshe2.txt) | 2773.89 | 64.35 | 282.30 (3) | 445 | Permutation,TwoBytes,Zeroes,Seed| | [poly_1_mersenne](doc/poly_1_mersenne.txt) | 1369.21 | 61.59 | 248.86 (4) | 479 | fails most tests | | [poly_2_mersenne](doc/poly_2_mersenne.txt) | 1364.03 | 70.30 | 261.00 (6) | 479 | | diff --git a/doc/FxHash32.txt b/doc/FxHash32.txt new file mode 100644 index 00000000..66b06a57 --- /dev/null +++ b/doc/FxHash32.txt @@ -0,0 +1,108 @@ +------------------------------------------------------------------------------- +--- Testing FxHash32 "FxHash (FireFox hash) with 32 bits (crate `fxhash`)" GOOD + +[[[ Sanity Tests ]]] + +Verification value 0xBBE55FD6 ....... PASS +Running sanity check 1 .......... PASS +Running AppendedZeroesTest .......... PASS + +[[[ Speed Tests ]]] + +Bulk speed test - 262144-byte keys +Alignment 7 - 1.077 bytes/cycle - 3080.54 MiB/sec @ 3 ghz +Alignment 6 - 1.077 bytes/cycle - 3080.49 MiB/sec @ 3 ghz +Alignment 5 - 1.077 bytes/cycle - 3080.48 MiB/sec @ 3 ghz +Alignment 4 - 1.077 bytes/cycle - 3080.61 MiB/sec @ 3 ghz +Alignment 3 - 1.077 bytes/cycle - 3080.54 MiB/sec @ 3 ghz +Alignment 2 - 1.077 bytes/cycle - 3080.54 MiB/sec @ 3 ghz +Alignment 1 - 1.077 bytes/cycle - 3080.54 MiB/sec @ 3 ghz +Alignment 0 - 1.077 bytes/cycle - 3080.61 MiB/sec @ 3 ghz +Average - 1.077 bytes/cycle - 3080.54 MiB/sec @ 3 ghz + +Small key speed test - 1-byte keys - 13.00 cycles/hash +Small key speed test - 2-byte keys - 17.00 cycles/hash +Small key speed test - 3-byte keys - 21.00 cycles/hash +Small key speed test - 4-byte keys - 14.00 cycles/hash +Small key speed test - 5-byte keys - 18.00 cycles/hash +Small key speed test - 6-byte keys - 22.00 cycles/hash +Small key speed test - 7-byte keys - 25.79 cycles/hash +Small key speed test - 8-byte keys - 18.00 cycles/hash +Small key speed test - 9-byte keys - 22.00 cycles/hash +Small key speed test - 10-byte keys - 26.00 cycles/hash +Small key speed test - 11-byte keys - 29.76 cycles/hash +Small key speed test - 12-byte keys - 21.00 cycles/hash +Small key speed test - 13-byte keys - 25.00 cycles/hash +Small key speed test - 14-byte keys - 29.88 cycles/hash +Small key speed test - 15-byte keys - 33.00 cycles/hash +Small key speed test - 16-byte keys - 24.00 cycles/hash +Small key speed test - 17-byte keys - 28.00 cycles/hash +Small key speed test - 18-byte keys - 32.00 cycles/hash +Small key speed test - 19-byte keys - 36.00 cycles/hash +Small key speed test - 20-byte keys - 28.00 cycles/hash +Small key speed test - 21-byte keys - 32.00 cycles/hash +Small key speed test - 22-byte keys - 36.00 cycles/hash +Small key speed test - 23-byte keys - 40.00 cycles/hash +Small key speed test - 24-byte keys - 32.46 cycles/hash +Small key speed test - 25-byte keys - 36.99 cycles/hash +Small key speed test - 26-byte keys - 40.00 cycles/hash +Small key speed test - 27-byte keys - 43.00 cycles/hash +Small key speed test - 28-byte keys - 36.00 cycles/hash +Small key speed test - 29-byte keys - 40.00 cycles/hash +Small key speed test - 30-byte keys - 43.00 cycles/hash +Small key speed test - 31-byte keys - 47.00 cycles/hash +Average 29.351 cycles/hash + +[[[ 'Hashmap' Speed Tests ]]] + +std::unordered_map +Init std HashMapTest: 679.304 cycles/op (479826 inserts, 1% deletions) +Running std HashMapTest: 546.764 cycles/op (3.9 stdv) + +greg7mdp/parallel-hashmap +Init fast HashMapTest: 804.287 cycles/op (479826 inserts, 1% deletions) +Running fast HashMapTest: 401.612 cycles/op (1.8 stdv) ....... PASS + +[[[ Avalanche Tests ]]] + +Testing 24-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!! +Testing 32-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!! +Testing 40-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 78.310000% !!!!! +Testing 48-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 5.068000% !!!!! +Testing 56-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 1.037333% !!!!! +Testing 64-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 78.310000% !!!!! +Testing 72-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!! +Testing 80-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.576000% +Testing 96-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 5.015333% !!!!! +Testing 112-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.632667% +Testing 128-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.664000% +Testing 160-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.642667% +Testing 512-bit keys -> 32-bit hashes, 300000 reps.[[[ BadSeeds Tests ]]] + +Testing 0 internal secrets: +0x0 +Broken seed 0x00000000 => 0 with key[1] of all 0 bytes confirmed => hash 0 !!!! + +Broken seed 0x00000000 => 0 with key[2] of all 0 bytes confirmed => hash 0 !!!! + +Broken seed 0x00000000 => 0 with key[4] of all 0 bytes confirmed => hash 0 !!!! + +Broken seed 0x00000000 => 0 with key[8] of all 0 bytes confirmed => hash 0 !!!! + +Broken seed 0x00000000 => 0 with key[12] of all 0 bytes confirmed => hash 0 !!!! + +Broken seed 0x00000000 => 0 with key[16] of all 0 bytes confirmed => hash 0 !!!! + +Broken seed 0x00000000 => 0 with key[32] of all 0 bytes confirmed => hash 0 !!!! + +Broken seed 0x00000000 => 0 with key[64] of all 0 bytes confirmed => hash 0 !!!! + +Broken seed 0x00000000 => 0 with key[128] of all 0 bytes confirmed => hash 0 !!!! +Testing the first 0xffffffff seeds ... +4 threads starting... +at 40000000 +Broken seed 0x40000000 => 0 with key[16] of all 0 bytes +at 0 +Broken seed 0x00000000 => 0 with key[16] of all 0 bytes +at 80000000 +Broken seed 0x80000000 => 0 with key[16] of all 0 bytes diff --git a/doc/FxHash64.txt b/doc/FxHash64.txt new file mode 100644 index 00000000..7317662a --- /dev/null +++ b/doc/FxHash64.txt @@ -0,0 +1,518 @@ +------------------------------------------------------------------------------- +--- Testing FxHash64 "FxHash (FireFox hash) with 64 bits (crate `fxhash`)" GOOD + +[[[ Sanity Tests ]]] + +Verification value 0x09C69C4D ....... PASS +Running sanity check 1 .......... PASS +Running AppendedZeroesTest .......... PASS + +[[[ Speed Tests ]]] + +Bulk speed test - 262144-byte keys +Alignment 7 - 2.143 bytes/cycle - 6132.12 MiB/sec @ 3 ghz +Alignment 6 - 2.143 bytes/cycle - 6131.08 MiB/sec @ 3 ghz +Alignment 5 - 2.147 bytes/cycle - 6142.31 MiB/sec @ 3 ghz +Alignment 4 - 2.145 bytes/cycle - 6136.59 MiB/sec @ 3 ghz +Alignment 3 - 2.144 bytes/cycle - 6134.97 MiB/sec @ 3 ghz +Alignment 2 - 2.147 bytes/cycle - 6141.73 MiB/sec @ 3 ghz +Alignment 1 - 2.147 bytes/cycle - 6142.80 MiB/sec @ 3 ghz +Alignment 0 - 2.153 bytes/cycle - 6159.82 MiB/sec @ 3 ghz +Average - 2.146 bytes/cycle - 6140.18 MiB/sec @ 3 ghz + +Small key speed test - 1-byte keys - 13.49 cycles/hash +Small key speed test - 2-byte keys - 17.19 cycles/hash +Small key speed test - 3-byte keys - 21.00 cycles/hash +Small key speed test - 4-byte keys - 13.00 cycles/hash +Small key speed test - 5-byte keys - 17.00 cycles/hash +Small key speed test - 6-byte keys - 21.00 cycles/hash +Small key speed test - 7-byte keys - 24.82 cycles/hash +Small key speed test - 8-byte keys - 14.58 cycles/hash +Small key speed test - 9-byte keys - 18.75 cycles/hash +Small key speed test - 10-byte keys - 22.00 cycles/hash +Small key speed test - 11-byte keys - 26.00 cycles/hash +Small key speed test - 12-byte keys - 17.99 cycles/hash +Small key speed test - 13-byte keys - 22.00 cycles/hash +Small key speed test - 14-byte keys - 26.00 cycles/hash +Small key speed test - 15-byte keys - 29.00 cycles/hash +Small key speed test - 16-byte keys - 18.00 cycles/hash +Small key speed test - 17-byte keys - 22.00 cycles/hash +Small key speed test - 18-byte keys - 26.00 cycles/hash +Small key speed test - 19-byte keys - 29.00 cycles/hash +Small key speed test - 20-byte keys - 21.93 cycles/hash +Small key speed test - 21-byte keys - 26.00 cycles/hash +Small key speed test - 22-byte keys - 29.12 cycles/hash +Small key speed test - 23-byte keys - 33.00 cycles/hash +Small key speed test - 24-byte keys - 22.49 cycles/hash +Small key speed test - 25-byte keys - 26.00 cycles/hash +Small key speed test - 26-byte keys - 29.67 cycles/hash +Small key speed test - 27-byte keys - 33.00 cycles/hash +Small key speed test - 28-byte keys - 25.00 cycles/hash +Small key speed test - 29-byte keys - 29.88 cycles/hash +Small key speed test - 30-byte keys - 33.00 cycles/hash +Small key speed test - 31-byte keys - 36.91 cycles/hash +Average 24.027 cycles/hash + +[[[ 'Hashmap' Speed Tests ]]] + +std::unordered_map +Init std HashMapTest: 702.718 cycles/op (479826 inserts, 1% deletions) +Running std HashMapTest: 544.118 cycles/op (19.3 stdv) + +greg7mdp/parallel-hashmap +Init fast HashMapTest: 821.797 cycles/op (479826 inserts, 1% deletions) +Running fast HashMapTest: 397.787 cycles/op (13.6 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.3, actual 0 (0.00x) +Testing collisions (high 19-25 bits) - Worst is 19 bits: 1178/2368 (0.50x) +Testing collisions (low 32-bit) - Expected 0.3, actual 0 (0.00x) +Testing collisions (low 19-25 bits) - Worst is 0 bits: 0/ 1 (0.00x) +Testing distribution - Worst bias is the 13-bit window at bit 61 - 17.043% !!!!! + +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 188.2, actual 0 (0.00x) +Testing collisions (high 24-35 bits) - Worst is 25 bits: 83604/23794 (3.51x) !!!!! +Testing collisions (low 32-bit) - Expected 188.2, actual 0 (0.00x) +Testing collisions (low 24-35 bits) - Worst is 25 bits: 42450/23794 (1.78x) +Testing distribution - Worst bias is the 17-bit window at bit 37 - 5.579% !!!!! + +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 2372.2, actual 482 (0.20x) +Testing collisions (high 25-38 bits) - Worst is 30 bits: 33425/9478 (3.53x) !!!!! +Testing collisions (low 32-bit) - Expected 2372.2, actual 0 (0.00x) +Testing collisions (low 25-38 bits) - Worst is 31 bits: 942649/4742 (198.76x) !!!!! +Testing distribution - Worst bias is the 19-bit window at bit 0 - 98.759% !!!!! + +Keyset 'Sparse' - 40-bit keys with up to 6 bits set - 4598479 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 2460.8, actual 1388 (0.56x) +Testing collisions (high 25-38 bits) - Worst is 28 bits: 36529/39163 (0.93x) +Testing collisions (low 32-bit) - Expected 2460.8, actual 1509563 (613.43x) (1507103) !!!!! +Testing collisions (low 25-38 bits) - Worst is 35 bits: 444722/307 (1445.31x) !!!!! +Testing distribution - Worst bias is the 19-bit window at bit 0 - 98.267% !!!!! + +Keyset 'Sparse' - 48-bit keys with up to 6 bits set - 14196869 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 23437.8, actual 27134 (1.16x) (3697) +Testing collisions (high 27-42 bits) - Worst is 34 bits: 8580/5864 (1.46x) +Testing collisions (low 32-bit) - Expected 23437.8, actual 4719514 (201.36x) (4696077) !!!!! +Testing collisions (low 27-42 bits) - Worst is 40 bits: 213363/91 (2327.91x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 92.403% !!!!! + +Keyset 'Sparse' - 56-bit keys with up to 5 bits set - 4216423 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 2069.0, actual 2158 (1.04x) (90) +Testing collisions (high 25-38 bits) - Worst is 32 bits: 2158/2068 (1.04x) +Testing collisions (low 32-bit) - Expected 2069.0, actual 492450 (238.02x) (490382) !!!!! +Testing collisions (low 25-38 bits) - Worst is 38 bits: 110591/32 (3419.82x) !!!!! +Testing distribution - Worst bias is the 19-bit window at bit 0 - 51.748% !!!!! + +Keyset 'Sparse' - 64-bit keys with up to 5 bits set - 8303633 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 8021.7, actual 9821 (1.22x) (1800) +Testing collisions (high 26-40 bits) - Worst is 39 bits: 134/62 (2.14x) !!!!! +Testing collisions (low 32-bit) - Expected 8021.7, actual 8060808 (1004.87x) (8052787) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 7543534/31 (240585.54x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.997% !!!!! + +Keyset 'Sparse' - 72-bit keys with up to 5 bits set - 15082603 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 2237942 (362949309227.63x) (2237942) !!!!! +Testing collisions (high 32-bit) - Expected 26451.8, actual 2259584 (85.42x) (2233133) !!!!! +Testing collisions (high 27-42 bits) - Worst is 42 bits: 2237956/25 (86534.50x) !!!!! +Testing collisions (low 32-bit) - Expected 26451.8, actual 14182312 (536.16x) (14155861) !!!!! +Testing collisions (low 27-42 bits) - Worst is 42 bits: 12352391/25 (477626.89x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.952% !!!!! + +Keyset 'Sparse' - 96-bit keys with up to 4 bits set - 3469497 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 275706 (845012295340.47x) (275706) !!!!! +Testing collisions (high 32-bit) - Expected 1401.0, actual 276841 (197.61x) (275441) !!!!! +Testing collisions (high 25-38 bits) - Worst is 38 bits: 275717/21 (12592.22x) !!!!! +Testing collisions (low 32-bit) - Expected 1401.0, actual 2647507 (1889.78x) (2646107) !!!!! +Testing collisions (low 25-38 bits) - Worst is 38 bits: 2212877/21 (101063.89x) !!!!! +Testing distribution - Worst bias is the 19-bit window at bit 0 - 99.914% !!!!! + +Keyset 'Sparse' - 160-bit keys with up to 4 bits set - 26977161 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 2649802 (134329274808.78x) (2649802) !!!!! +Testing collisions (high 32-bit) - Expected 84546.1, actual 2716564 (32.13x) (2632018) !!!!! +Testing collisions (high 28-44 bits) - Worst is 44 bits: 2649819/20 (128107.27x) !!!!! +Testing collisions (low 32-bit) - Expected 84546.1, actual 20614199 (243.82x) (20529653) !!!!! +Testing collisions (low 28-44 bits) - Worst is 44 bits: 13682308/20 (661480.30x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.463% !!!!! + +Keyset 'Sparse' - 256-bit keys with up to 3 bits set - 2796417 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 184939 (872518233031.92x) (184939) !!!!! +Testing collisions (high 32-bit) - Expected 910.2, actual 185706 (204.04x) (184796) !!!!! +Testing collisions (high 25-37 bits) - Worst is 37 bits: 184953/28 (6501.30x) !!!!! +Testing collisions (low 32-bit) - Expected 910.2, actual 1865362 (2049.48x) (1864452) !!!!! +Testing collisions (low 25-37 bits) - Worst is 37 bits: 1598614/28 (56193.06x) !!!!! +Testing distribution - Worst bias is the 19-bit window at bit 0 - 99.261% !!!!! + +Keyset 'Sparse' - 512-bit keys with up to 3 bits set - 22370049 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 1608462 (118584157365.02x) (1608462) !!!!! +Testing collisions (high 32-bit) - Expected 58155.4, actual 1658735 (28.52x) (1600580) !!!!! +Testing collisions (high 28-43 bits) - Worst is 43 bits: 1608487/28 (56546.26x) !!!!! +Testing collisions (low 32-bit) - Expected 58155.4, actual 8236857 (141.64x) (8178702) !!!!! +Testing collisions (low 28-43 bits) - Worst is 43 bits: 5814154/28 (204396.22x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 83.872% !!!!! + +Keyset 'Sparse' - 1024-bit keys with up to 2 bits set - 524801 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 26866 (3598854165298.65x) (26866) !!!!! +Testing collisions (high 32-bit) - Expected 32.1, actual 26893 (838.80x) (26861) !!!!! +Testing collisions (high 22-32 bits) - Worst is 32 bits: 26893/32 (838.80x) !!!!! +Testing collisions (low 32-bit) - Expected 32.1, actual 77100 (2404.77x) (77068) !!!!! +Testing collisions (low 22-32 bits) - Worst is 32 bits: 77100/32 (2404.77x) !!!!! +Testing distribution - Worst bias is the 16-bit window at bit 0 - 55.254% !!!!! + +Keyset 'Sparse' - 2048-bit keys with up to 2 bits set - 2098177 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 109868 (920739765038.43x) (109868) !!!!! +Testing collisions (high 32-bit) - Expected 512.4, actual 110347 (215.35x) (109835) !!!!! +Testing collisions (high 24-36 bits) - Worst is 36 bits: 109888/32 (3430.68x) !!!!! +Testing collisions (low 32-bit) - Expected 512.4, actual 209684 (409.21x) (209172) !!!!! +Testing collisions (low 24-36 bits) - Worst is 36 bits: 195890/32 (6115.65x) !!!!! +Testing distribution - Worst bias is the 18-bit window at bit 0 - 30.674% !!!!! + +*********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 70216 (450964844278.59x) (70216) !!!!! +Testing collisions (high 32-bit) - Expected 668.6, actual 70236 (105.05x) (69568) !!!!! +Testing collisions (high 24-37 bits) - Worst is 37 bits: 70216/20 (3359.97x) !!!!! +Testing collisions (low 32-bit) - Expected 668.6, actual 2134600 (3192.60x) (2133932) !!!!! +Testing collisions (low 24-37 bits) - Worst is 37 bits: 2077256/20 (99400.66x) !!!!! +Testing distribution - Worst bias is the 18-bit window at bit 11 - 68.110% !!!!! + +*********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 70216 (450964844278.59x) (70216) !!!!! +Testing collisions (high 32-bit) - Expected 668.6, actual 79313 (118.62x) (78645) !!!!! +Testing collisions (high 24-37 bits) - Worst is 37 bits: 70216/20 (3359.97x) !!!!! +Testing collisions (low 32-bit) - Expected 668.6, actual 2134600 (3192.60x) (2133932) !!!!! +Testing collisions (low 24-37 bits) - Worst is 37 bits: 870216/20 (41641.49x) !!!!! +Testing distribution - Worst bias is the 18-bit window at bit 1 - 93.870% !!!!! + +*********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 3823215 (947015301028.56x) (3823215) !!!!! +Testing collisions (high 32-bit) - Expected 17322.9, actual 3827420 (220.95x) (3810098) !!!!! +Testing collisions (high 27-41 bits) - Worst is 41 bits: 3823215/33 (112893.23x) !!!!! +Testing collisions (low 32-bit) - Expected 17322.9, actual 12147398 (701.23x) (12130076) !!!!! +Testing collisions (low 27-41 bits) - Worst is 41 bits: 9247656/33 (273068.02x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.708% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196162 (512.56x) (4187976) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194310/31 (131072.60x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 6292158 (768.59x) (6283972) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 6291454/31 (196608.55x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 1 - 53.238% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196458 (512.60x) (4188272) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194306/31 (131072.47x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 6292016 (768.57x) (6283830) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 4194322/31 (131072.97x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 11 - 33.457% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196208 (512.57x) (4188022) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194302/31 (131072.35x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 6291868 (768.55x) (6283682) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 6291454/31 (196608.55x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 38.691% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196335 (512.58x) (4188149) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194309/31 (131072.57x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 4196938 (512.66x) (4188752) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 4194302/31 (131072.35x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 20.142% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196326 (512.58x) (4188140) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194311/31 (131072.63x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 4196290 (512.58x) (4188104) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 4194307/31 (131072.51x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 9 - 20.111% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196274 (512.57x) (4188088) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194310/31 (131072.60x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 6291866 (768.55x) (6283680) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 6291454/31 (196608.55x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 15 - 38.573% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196432 (512.59x) (4188246) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194312/31 (131072.66x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 4196360 (512.58x) (4188174) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 4194309/31 (131072.57x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 53 - 20.063% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196348 (512.58x) (4188162) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194304/31 (131072.41x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 6291991 (768.57x) (6283805) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 6291455/31 (196608.59x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 6 - 38.568% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196279 (512.57x) (4188093) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194314/31 (131072.72x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 4196433 (512.59x) (4188247) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 4194313/31 (131072.69x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 2 - 20.050% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196270 (512.57x) (4188084) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194322/31 (131072.97x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 6291949 (768.56x) (6283763) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 6291454/31 (196608.55x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 43 - 38.585% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196289 (512.58x) (4188103) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194309/31 (131072.57x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 4196317 (512.58x) (4188131) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 4194316/31 (131072.79x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 8 - 20.048% !!!!! + +*********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 4194302 (2199023517695.97x) (4194302) !!!!! +Testing collisions (high 32-bit) - Expected 8186.7, actual 4196282 (512.58x) (4188096) !!!!! +Testing collisions (high 26-40 bits) - Worst is 40 bits: 4194310/31 (131072.60x) !!!!! +Testing collisions (low 32-bit) - Expected 8186.7, actual 6291898 (768.55x) (6283712) !!!!! +Testing collisions (low 26-40 bits) - Worst is 40 bits: 6291455/31 (196608.59x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 16 - 38.538% !!!!! + +*********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 0 (0.00x) +Testing collisions (high 32-bit) - Expected 116.4, actual 118 (1.01x) (2) +Testing collisions (high 23-34 bits) - Worst is 33 bits: 68/58 (1.17x) +Testing collisions (low 32-bit) - Expected 116.4, actual 118 (1.01x) (2) +Testing collisions (low 23-34 bits) - Worst is 33 bits: 63/58 (1.08x) +Testing distribution - Worst bias is the 17-bit window at bit 32 - 0.131% + +Keyset 'Cyclic' - 8 cycles of 9 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 116.4, actual 118 (1.01x) (2) +Testing collisions (high 23-34 bits) - Worst is 34 bits: 31/29 (1.07x) +Testing collisions (low 32-bit) - Expected 116.4, actual 95 (0.82x) +Testing collisions (low 23-34 bits) - Worst is 25 bits: 14726/14754 (1.00x) +Testing distribution - Worst bias is the 17-bit window at bit 15 - 0.131% + +Keyset 'Cyclic' - 8 cycles of 10 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 116.4, actual 120 (1.03x) (4) +Testing collisions (high 23-34 bits) - Worst is 34 bits: 35/29 (1.20x) +Testing collisions (low 32-bit) - Expected 116.4, actual 124 (1.07x) (8) +Testing collisions (low 23-34 bits) - Worst is 34 bits: 41/29 (1.41x) +Testing distribution - Worst bias is the 16-bit window at bit 53 - 0.087% + +Keyset 'Cyclic' - 8 cycles of 11 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 116.4, actual 133 (1.14x) (17) +Testing collisions (high 23-34 bits) - Worst is 34 bits: 35/29 (1.20x) +Testing collisions (low 32-bit) - Expected 116.4, actual 121 (1.04x) (5) +Testing collisions (low 23-34 bits) - Worst is 33 bits: 69/58 (1.19x) +Testing distribution - Worst bias is the 17-bit window at bit 16 - 0.125% + +Keyset 'Cyclic' - 8 cycles of 12 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 116.4, actual 114 (0.98x) +Testing collisions (high 23-34 bits) - Worst is 29 bits: 990/930 (1.06x) +Testing collisions (low 32-bit) - Expected 116.4, actual 111 (0.95x) +Testing collisions (low 23-34 bits) - Worst is 30 bits: 470/465 (1.01x) +Testing distribution - Worst bias is the 16-bit window at bit 20 - 0.091% + +Keyset 'Cyclic' - 8 cycles of 16 bytes - 1000000 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 116.4, actual 112 (0.96x) +Testing collisions (high 23-34 bits) - Worst is 30 bits: 487/465 (1.05x) +Testing collisions (low 32-bit) - Expected 116.4, actual 123 (1.06x) (7) +Testing collisions (low 23-34 bits) - Worst is 31 bits: 256/232 (1.10x) +Testing distribution - Worst bias is the 16-bit window at bit 45 - 0.098% + + +[[[ Keyset 'TwoBytes' Tests ]]] + +Keyset 'TwoBytes' - up-to-4-byte keys, 652545 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 65790 (5700190072710.22x) (65790) !!!!! +Testing collisions (high 32-bit) - Expected 49.6, actual 65810 (1327.65x) (65761) !!!!! +Testing collisions (high 23-33 bits) - Worst is 33 bits: 65799/24 (2654.79x) !!!!! +Testing collisions (low 32-bit) - Expected 49.6, actual 65802 (1327.49x) (65753) !!!!! +Testing collisions (low 23-33 bits) - Worst is 33 bits: 65795/24 (2654.63x) !!!!! +Testing distribution - Worst bias is the 16-bit window at bit 0 - 99.853% !!!!! + +Keyset 'TwoBytes' - up-to-8-byte keys, 5471025 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 914175 (1126786770603.92x) (914175) !!!!! +Testing collisions (high 32-bit) - Expected 3483.1, actual 916359 (263.09x) (912876) !!!!! +Testing collisions (high 26-39 bits) - Worst is 39 bits: 914184/27 (33581.30x) !!!!! +Testing collisions (low 32-bit) - Expected 3483.1, actual 2800557 (804.05x) (2797074) !!!!! +Testing collisions (low 26-39 bits) - Worst is 39 bits: 2258833/27 (82975.15x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.994% !!!!! + +Keyset 'TwoBytes' - up-to-12-byte keys, 18616785 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 7295332 (776578630738.70x) (7295332) !!!!! +Testing collisions (high 32-bit) - Expected 40289.5, actual 7311376 (181.47x) (7271087) !!!!! +Testing collisions (high 27-42 bits) - Worst is 42 bits: 7295346/39 (185151.39x) !!!!! +Testing collisions (low 32-bit) - Expected 40289.5, actual 14452092 (358.71x) (14411803) !!!!! +Testing collisions (low 27-42 bits) - Worst is 42 bits: 12227417/39 (310324.32x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.959% !!!!! + +Keyset 'TwoBytes' - up-to-16-byte keys, 44251425 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 22808631 (429728765773.25x) (22808631) !!!!! +Testing collisions (high 32-bit) - Expected 227182.3, actual 22862228 (100.63x) (22635046) !!!!! +Testing collisions (high 29-45 bits) - Worst is 45 bits: 22808633/27 (819642.99x) !!!!! +Testing collisions (low 32-bit) - Expected 227182.3, actual 34034581 (149.81x) (33807399) !!!!! +Testing collisions (low 29-45 bits) - Worst is 45 bits: 29255295/27 (1051307.96x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.945% !!!!! + +Keyset 'TwoBytes' - up-to-20-byte keys, 86536545 total keys +Testing collisions ( 64-bit) - Expected 0.0, actual 58007638 (285782612041.67x) (58007638) !!!!! +Testing collisions (high 32-bit) - Expected 865959.1, actual 58102049 (67.10x) (57236090) !!!!! +Testing collisions (high 30-47 bits) - Worst is 47 bits: 58007638/26 (2180348.74x) !!!!! +Testing collisions (low 32-bit) - Expected 865959.1, actual 74526043 (86.06x) (73660084) !!!!! +Testing collisions (low 30-47 bits) - Worst is 47 bits: 66811049/26 (2511244.93x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.859% !!!!! + +*********FAIL********* + +[[[ Keyset 'Text' Tests ]]] + +Keyset 'Text' - keys of form "FooXXXXBar" - 14776336 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x) +Testing collisions (high 32-bit) - Expected 25389.0, actual 19945 (0.79x) +Testing collisions (high 27-42 bits) - Worst is 27 bits: 671364/784335 (0.86x) +Testing collisions (low 32-bit) - Expected 25389.0, actual 14775312 (581.96x) (14749923) !!!!! +Testing collisions (low 27-42 bits) - Worst is 42 bits: 14712848/24 (592725.43x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.902% !!!!! + +Keyset 'Text' - keys of form "FooBarXXXX" - 14776336 keys +Testing collisions ( 64-bit) - Expected 0.0, actual 14297104 (2415818528851.41x) (14297104) !!!!! +Testing collisions (high 32-bit) - Expected 25389.0, actual 14297104 (563.12x) (14271715) !!!!! +Testing collisions (high 27-42 bits) - Worst is 42 bits: 14297104/24 (575976.67x) !!!!! +Testing collisions (low 32-bit) - Expected 25389.0, actual 14767120 (581.63x) (14741731) !!!!! +Testing collisions (low 27-42 bits) - Worst is 42 bits: 14767120/24 (594911.85x) !!!!! +Testing distribution - Worst bias is the 20-bit window at bit 0 - 99.315% !!!!! + +Keyset 'Text' - keys of form "XXXXFooBar" - 14776336 keys +Testing collisions ( 64-bit) - Expected 0.0, \ No newline at end of file diff --git a/main.cpp b/main.cpp index 7b757a27..557bdd27 100644 --- a/main.cpp +++ b/main.cpp @@ -782,8 +782,8 @@ HashInfo g_hashes[] = { blake3_rs, 256, 0x170AB674, "BLAKE3_rs", "BLAKE3 (crate `blake3`)", POOR, {} }, { crc32fast_rs, 32, 0x5C7DDD1F, "CRC32_rs", "CRC32 (crate `crc32fast`)", POOR, {} }, { fnvhash_rs, 64, 0xBF1EC520, "FNV_rs", "Fowler-Noll-Vo hash function (crate `fnv`)", POOR, {} }, -{ fxhash32_rs, 32, 0xBBE55FD6, "FxHash32", "FxHash (FireFox hash) with 32 bits (crate `fxhash`)", GOOD, {} }, -{ fxhash64_rs, 64, 0x09C69C4D, "FxHash64", "FxHash (FireFox hash) with 64 bits (crate `fxhash`)", GOOD, {} }, +{ fxhash32_rs, 32, 0xBBE55FD6, "FxHash32", "FxHash (FireFox hash) with 32 bits (crate `fxhash`)", POOR, {} }, +{ fxhash64_rs, 64, 0x09C69C4D, "FxHash64", "FxHash (FireFox hash) with 64 bits (crate `fxhash`)", POOR, {} }, { hash_hasher_rs, 64, 0xFAF9F8F7, "hash_hasher_rs", "A hasher designed to work on already hashed or hash-like data (crate `hash_hasher`)", SKIP, {} }, { highway_rs, 64, 0x53BE18F1, "Highway_rs", "An implementation of Google's HighwayHash (crate `highway`)", POOR, {} }, { md5_rs, 128, 0x3008D5BF, "MD5_rs", "MD5 algorithm (crate `md-5`)", POOR, {} },