On Fri, Oct 13, 2017 at 3:00 AM, Andres Freund <and...@anarazel.de> wrote: > On 2017-10-12 17:27:52 -0400, Robert Haas wrote: >> On Thu, Oct 12, 2017 at 4:20 PM, Andres Freund <and...@anarazel.de> wrote: >> >> In other words, it's not utterly fixed in stone --- we invented >> >> --load-via-partition-root primarily to cope with circumstances that >> >> could change hash values --- but we sure don't want to be changing it >> >> with any regularity, or for a less-than-excellent reason. >> > >> > Yea, that's what I expected. It'd probably good for somebody to run >> > smhasher or such on the output of the combine function (or even better, >> > on both the 32 and 64 bit variants) in that case. >> >> Not sure how that test suite works exactly, but presumably the >> characteristics in practice will depend the behavior of the hash >> functions used as input the combine function - so the behavior could >> be good for an (int, int) key but bad for a (text, date) key, or >> whatever. > > I don't think that's true, unless you have really bad hash functions on > the the component hashes. A hash combine function can't really do > anything about badly hashed input, what you want is that it doesn't > *reduce* the quality of the hash by combining. >
I tried to get suggested SMHasher[1] test result for the hash_combine for 32-bit and 64-bit version. SMHasher works on hash keys of the form {0}, {0,1}, {0,1,2}... up to N=255, using 256-N as the seed, for the hash_combine testing we needed two hash value to be combined, for that, I've generated 64 and 128-bit hash using cityhash functions[2] for the given smhasher key then split in two part to test 32-bit and 64-bit hash_combine function respectively. Attached patch for SMHasher code changes & output of 32-bit and 64-bit hash_combine testing. Note that I have skipped speed test this test which is irrelevant here. By referring other hash function results [3], we can see that hash_combine test results are not bad either. Do let me know if current testing is not good enough or if you want me to do more testing, thanks. 1] https://github.com/aappleby/smhasher 2] https://github.com/aappleby/smhasher/blob/master/src/CityTest.cpp 3] https://github.com/rurban/smhasher/tree/master/doc Regards, Amul
[amul.sul@power2 src]$ ./SMHasher hash_combine64 ------------------------------------------------------------------------------- --- Testing hash_combine64 (test hash combine 64 pg function.) [[[ Sanity Tests ]]] Verification value 0x3B439A64 : Passed! Running sanity check 1..........PASS Running sanity check 2..........PASS [[[ Differential Tests ]]] Testing 8303632 up-to-5-bit differentials in 64-bit keys -> 64 bit hashes. 1000 reps, 8303632000 total tests, expecting 0.00 random collisions.......... 0 total collisions, of which 0 single collisions were ignored Testing 11017632 up-to-4-bit differentials in 128-bit keys -> 64 bit hashes. 1000 reps, 11017632000 total tests, expecting 0.00 random collisions.......... 0 total collisions, of which 0 single collisions were ignored Testing 2796416 up-to-3-bit differentials in 256-bit keys -> 64 bit hashes. 1000 reps, 2796416000 total tests, expecting 0.00 random collisions.......... 0 total collisions, of which 0 single collisions were ignored [[[ Avalanche Tests ]]] Testing 32-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.742667% Testing 40-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.684667% Testing 48-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.570667% Testing 56-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.726667% Testing 64-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.666667% Testing 72-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.659333% Testing 80-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.666000% Testing 88-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.712000% Testing 96-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.632667% Testing 104-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.646000% Testing 112-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.746000% Testing 120-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.692667% Testing 128-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.684000% Testing 136-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.758667% Testing 144-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.725333% Testing 152-bit keys -> 64-bit hashes, 300000 reps.......... worst bias is 0.776000% [[[ Keyset 'Cyclic' Tests ]]] Keyset 'Cyclic' - 8 cycles of 8 bytes - 10000000 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 6 - 0.039% Keyset 'Cyclic' - 8 cycles of 9 bytes - 10000000 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 30 - 0.043% Keyset 'Cyclic' - 8 cycles of 10 bytes - 10000000 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 25 - 0.032% Keyset 'Cyclic' - 8 cycles of 11 bytes - 10000000 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 42 - 0.033% Keyset 'Cyclic' - 8 cycles of 12 bytes - 10000000 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 19-bit window at bit 18 - 0.017% [[[ Keyset 'TwoBytes' Tests ]]] Keyset 'TwoBytes' - up-to-4-byte keys, 652545 total keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 16-bit window at bit 55 - 0.127% Keyset 'TwoBytes' - up-to-8-byte keys, 5471025 total keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 15 - 0.065% Keyset 'TwoBytes' - up-to-12-byte keys, 18616785 total keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 14 - 0.023% Keyset 'TwoBytes' - up-to-16-byte keys, 44251425 total keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 11 - 0.006% Keyset 'TwoBytes' - up-to-20-byte keys, 86536545 total keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 52 - 0.003% [[[ Keyset 'Sparse' Tests ]]] Keyset 'Sparse' - 32-bit keys with up to 6 bits set - 1149017 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 17-bit window at bit 46 - 0.106% Keyset 'Sparse' - 40-bit keys with up to 6 bits set - 4598479 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 19-bit window at bit 24 - 0.049% Keyset 'Sparse' - 48-bit keys with up to 5 bits set - 1925357 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 18-bit window at bit 10 - 0.084% Keyset 'Sparse' - 56-bit keys with up to 5 bits set - 4216423 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 19-bit window at bit 11 - 0.047% Keyset 'Sparse' - 64-bit keys with up to 5 bits set - 8303633 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 18 - 0.036% Keyset 'Sparse' - 96-bit keys with up to 4 bits set - 3469497 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 19-bit window at bit 25 - 0.053% Keyset 'Sparse' - 256-bit keys with up to 3 bits set - 2796417 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 19-bit window at bit 3 - 0.087% Keyset 'Sparse' - 2048-bit keys with up to 2 bits set - 2098177 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 18-bit window at bit 17 - 0.093% [[[ Keyset 'Combination Lowbits' Tests ]]] Keyset 'Combination' - up to 8 blocks from a set of 8 - 19173960 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 50 - 0.013% [[[ Keyset 'Combination Highbits' Tests ]]] Keyset 'Combination' - up to 8 blocks from a set of 8 - 19173960 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 55 - 0.020% [[[ Keyset 'Combination 0x8000000' Tests ]]] Keyset 'Combination' - up to 20 blocks from a set of 2 - 2097150 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 18-bit window at bit 7 - 0.067% [[[ Keyset 'Combination 0x0000001' Tests ]]] Keyset 'Combination' - up to 20 blocks from a set of 2 - 2097150 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 18-bit window at bit 32 - 0.058% [[[ Keyset 'Combination Hi-Lo' Tests ]]] Keyset 'Combination' - up to 6 blocks from a set of 15 - 12204240 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 4 - 0.036% [[[ Keyset 'Window' Tests ]]] Keyset 'Windowed' - 128-bit key, 20-bit window - 128 tests, 1048576 keys per test Window at 0 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 1 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 2 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 3 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 4 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 5 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 6 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 7 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 8 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 9 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 10 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 11 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 12 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 13 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 14 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 15 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 16 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 17 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 18 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 19 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 20 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 21 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 22 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 23 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 24 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 25 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 26 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 27 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 28 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 29 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 30 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 31 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 32 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 33 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 34 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 35 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 36 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 37 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 38 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 39 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 40 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 41 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 42 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 43 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 44 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 45 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 46 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 47 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 48 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 49 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 50 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 51 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 52 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 53 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 54 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 55 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 56 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 57 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 58 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 59 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 60 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 61 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 62 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 63 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 64 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 65 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 66 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 67 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 68 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 69 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 70 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 71 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 72 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 73 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 74 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 75 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 76 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 77 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 78 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 79 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 80 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 81 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 82 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 83 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 84 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 85 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 86 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 87 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 88 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 89 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 90 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 91 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 92 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 93 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 94 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 95 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 96 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 97 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 98 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 99 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 100 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 101 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 102 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 103 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 104 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 105 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 106 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 107 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 108 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 109 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 110 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 111 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 112 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 113 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 114 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 115 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 116 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 117 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 118 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 119 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 120 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 121 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 122 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 123 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 124 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 125 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 126 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 127 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Window at 128 - Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) [[[ Keyset 'Text' Tests ]]] Keyset 'Text' - keys of form "Foo[XXXX]Bar" - 14776336 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 19 - 0.023% Keyset 'Text' - keys of form "FooBar[XXXX]" - 14776336 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 5 - 0.018% Keyset 'Text' - keys of form "[XXXX]FooBar" - 14776336 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 20-bit window at bit 27 - 0.025% [[[ Keyset 'Zeroes' Tests ]]] Keyset 'Zeroes' - 65536 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 13-bit window at bit 24 - 0.708% [[[ Keyset 'Seed' Tests ]]] Keyset 'Seed' - 1000000 keys Testing collisions - Expected 0.00, actual 0.00 ( 0.00x) Testing distribution - Worst bias is the 17-bit window at bit 57 - 0.142% Input vcode 0x00000001, Output vcode 0x00000001, Result vcode 0x00000001 Verification value is 0x00000001 - Testing took 1522.120000 seconds ------------------------------------------------------------------------------- [amul.sul@power2 src]$
[amul.sul@power2 src]$ ./SMHasher hash_combine32 ------------------------------------------------------------------------------- --- Testing hash_combine32 (test hash combine 32 pg function.) [[[ Sanity Tests ]]] Verification value 0x83D5F11A : Passed! Running sanity check 1..........PASS Running sanity check 2..........PASS [[[ Differential Tests ]]] Testing 8303632 up-to-5-bit differentials in 64-bit keys -> 32 bit hashes. 1000 reps, 8303632000 total tests, expecting 1.93 random collisions.......... 4 total collisions, of which 4 single collisions were ignored Testing 11017632 up-to-4-bit differentials in 128-bit keys -> 32 bit hashes. 1000 reps, 11017632000 total tests, expecting 2.57 random collisions.......... 3 total collisions, of which 3 single collisions were ignored Testing 2796416 up-to-3-bit differentials in 256-bit keys -> 32 bit hashes. 1000 reps, 2796416000 total tests, expecting 0.65 random collisions.......... 0 total collisions, of which 0 single collisions were ignored [[[ Avalanche Tests ]]] Testing 32-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.707333% Testing 40-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.671333% Testing 48-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.646667% Testing 56-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.672667% Testing 64-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.677333% Testing 72-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.653333% Testing 80-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.620667% Testing 88-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.746000% Testing 96-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.582667% Testing 104-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.628667% Testing 112-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.694667% Testing 120-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.638000% Testing 128-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.670000% Testing 136-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.789333% Testing 144-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.684667% Testing 152-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 0.671333% [[[ Keyset 'Cyclic' Tests ]]] Keyset 'Cyclic' - 8 cycles of 4 bytes - 10000000 keys Testing collisions - Expected 11641.53, actual 11635.00 ( 1.00x) Testing distribution - Worst bias is the 20-bit window at bit 20 - 0.032% Keyset 'Cyclic' - 8 cycles of 5 bytes - 10000000 keys Testing collisions - Expected 11641.53, actual 11566.00 ( 0.99x) Testing distribution - Worst bias is the 20-bit window at bit 22 - 0.024% Keyset 'Cyclic' - 8 cycles of 6 bytes - 10000000 keys Testing collisions - Expected 11641.53, actual 11704.00 ( 1.01x) Testing distribution - Worst bias is the 20-bit window at bit 19 - 0.039% Keyset 'Cyclic' - 8 cycles of 7 bytes - 10000000 keys Testing collisions - Expected 11641.53, actual 11747.00 ( 1.01x) Testing distribution - Worst bias is the 20-bit window at bit 28 - 0.033% Keyset 'Cyclic' - 8 cycles of 8 bytes - 10000000 keys Testing collisions - Expected 11641.53, actual 11704.00 ( 1.01x) Testing distribution - Worst bias is the 20-bit window at bit 30 - 0.041% [[[ Keyset 'TwoBytes' Tests ]]] Keyset 'TwoBytes' - up-to-4-byte keys, 652545 total keys Testing collisions - Expected 49.57, actual 49.00 ( 0.99x) Testing distribution - Worst bias is the 16-bit window at bit 8 - 0.131% Keyset 'TwoBytes' - up-to-8-byte keys, 5471025 total keys Testing collisions - Expected 3484.56, actual 3642.00 ( 1.05x) Testing distribution - Worst bias is the 20-bit window at bit 1 - 0.046% Keyset 'TwoBytes' - up-to-12-byte keys, 18616785 total keys Testing collisions - Expected 40347.77, actual 40030.00 ( 0.99x) Testing distribution - Worst bias is the 20-bit window at bit 3 - 0.017% Keyset 'TwoBytes' - up-to-16-byte keys, 44251425 total keys Testing collisions - Expected 227963.15, actual 227430.00 ( 1.00x) Testing distribution - Worst bias is the 19-bit window at bit 0 - 0.009% Keyset 'TwoBytes' - up-to-20-byte keys, 86536545 total keys Testing collisions - Expected 871784.70, actual 866342.00 ( 0.99x) Testing distribution - Worst bias is the 20-bit window at bit 9 - 0.003% [[[ Keyset 'Sparse' Tests ]]] Keyset 'Sparse' - 32-bit keys with up to 6 bits set - 1149017 keys Testing collisions - Expected 153.70, actual 118.00 ( 0.77x) Testing distribution - Worst bias is the 16-bit window at bit 14 - 0.084% Keyset 'Sparse' - 40-bit keys with up to 6 bits set - 4598479 keys Testing collisions - Expected 2461.72, actual 2400.00 ( 0.97x) Testing distribution - Worst bias is the 19-bit window at bit 14 - 0.053% Keyset 'Sparse' - 48-bit keys with up to 5 bits set - 1925357 keys Testing collisions - Expected 431.55, actual 433.00 ( 1.00x) Testing distribution - Worst bias is the 18-bit window at bit 5 - 0.081% Keyset 'Sparse' - 56-bit keys with up to 5 bits set - 4216423 keys Testing collisions - Expected 2069.66, actual 2034.00 ( 0.98x) Testing distribution - Worst bias is the 18-bit window at bit 22 - 0.048% Keyset 'Sparse' - 64-bit keys with up to 5 bits set - 8303633 keys Testing collisions - Expected 8026.87, actual 8110.00 ( 1.01x) Testing distribution - Worst bias is the 20-bit window at bit 22 - 0.023% Keyset 'Sparse' - 96-bit keys with up to 4 bits set - 3469497 keys Testing collisions - Expected 1401.34, actual 1358.00 ( 0.97x) Testing distribution - Worst bias is the 19-bit window at bit 4 - 0.046% Keyset 'Sparse' - 256-bit keys with up to 3 bits set - 2796417 keys Testing collisions - Expected 910.36, actual 966.00 ( 1.06x) Testing distribution - Worst bias is the 19-bit window at bit 27 - 0.088% Keyset 'Sparse' - 2048-bit keys with up to 2 bits set - 2098177 keys Testing collisions - Expected 512.50, actual 506.00 ( 0.99x) Testing distribution - Worst bias is the 18-bit window at bit 23 - 0.077% [[[ Keyset 'Combination Lowbits' Tests ]]] Keyset 'Combination' - up to 8 blocks from a set of 8 - 19173960 keys Testing collisions - Expected 42799.01, actual 42616.00 ( 1.00x) Testing distribution - Worst bias is the 20-bit window at bit 28 - 0.023% [[[ Keyset 'Combination Highbits' Tests ]]] Keyset 'Combination' - up to 8 blocks from a set of 8 - 19173960 keys Testing collisions - Expected 42799.01, actual 42705.00 ( 1.00x) Testing distribution - Worst bias is the 20-bit window at bit 13 - 0.010% [[[ Keyset 'Combination 0x8000000' Tests ]]] Keyset 'Combination' - up to 20 blocks from a set of 2 - 2097150 keys Testing collisions - Expected 512.00, actual 503.00 ( 0.98x) Testing distribution - Worst bias is the 18-bit window at bit 31 - 0.072% [[[ Keyset 'Combination 0x0000001' Tests ]]] Keyset 'Combination' - up to 20 blocks from a set of 2 - 2097150 keys Testing collisions - Expected 512.00, actual 562.00 ( 1.10x) Testing distribution - Worst bias is the 18-bit window at bit 25 - 0.081% [[[ Keyset 'Combination Hi-Lo' Tests ]]] Keyset 'Combination' - up to 6 blocks from a set of 15 - 12204240 keys Testing collisions - Expected 17339.30, actual 17347.00 ( 1.00x) Testing distribution - Worst bias is the 20-bit window at bit 11 - 0.023% [[[ Keyset 'Window' Tests ]]] Keyset 'Windowed' - 64-bit key, 20-bit window - 64 tests, 1048576 keys per test Window at 0 - Testing collisions - Expected 128.00, actual 142.00 ( 1.11x) Window at 1 - Testing collisions - Expected 128.00, actual 120.00 ( 0.94x) Window at 2 - Testing collisions - Expected 128.00, actual 123.00 ( 0.96x) Window at 3 - Testing collisions - Expected 128.00, actual 124.00 ( 0.97x) Window at 4 - Testing collisions - Expected 128.00, actual 126.00 ( 0.98x) Window at 5 - Testing collisions - Expected 128.00, actual 118.00 ( 0.92x) Window at 6 - Testing collisions - Expected 128.00, actual 114.00 ( 0.89x) Window at 7 - Testing collisions - Expected 128.00, actual 125.00 ( 0.98x) Window at 8 - Testing collisions - Expected 128.00, actual 139.00 ( 1.09x) Window at 9 - Testing collisions - Expected 128.00, actual 139.00 ( 1.09x) Window at 10 - Testing collisions - Expected 128.00, actual 131.00 ( 1.02x) Window at 11 - Testing collisions - Expected 128.00, actual 118.00 ( 0.92x) Window at 12 - Testing collisions - Expected 128.00, actual 137.00 ( 1.07x) Window at 13 - Testing collisions - Expected 128.00, actual 119.00 ( 0.93x) Window at 14 - Testing collisions - Expected 128.00, actual 153.00 ( 1.20x) Window at 15 - Testing collisions - Expected 128.00, actual 142.00 ( 1.11x) Window at 16 - Testing collisions - Expected 128.00, actual 138.00 ( 1.08x) Window at 17 - Testing collisions - Expected 128.00, actual 124.00 ( 0.97x) Window at 18 - Testing collisions - Expected 128.00, actual 119.00 ( 0.93x) Window at 19 - Testing collisions - Expected 128.00, actual 119.00 ( 0.93x) Window at 20 - Testing collisions - Expected 128.00, actual 131.00 ( 1.02x) Window at 21 - Testing collisions - Expected 128.00, actual 116.00 ( 0.91x) Window at 22 - Testing collisions - Expected 128.00, actual 106.00 ( 0.83x) Window at 23 - Testing collisions - Expected 128.00, actual 130.00 ( 1.02x) Window at 24 - Testing collisions - Expected 128.00, actual 140.00 ( 1.09x) Window at 25 - Testing collisions - Expected 128.00, actual 128.00 ( 1.00x) Window at 26 - Testing collisions - Expected 128.00, actual 138.00 ( 1.08x) Window at 27 - Testing collisions - Expected 128.00, actual 143.00 ( 1.12x) Window at 28 - Testing collisions - Expected 128.00, actual 91.00 ( 0.71x) Window at 29 - Testing collisions - Expected 128.00, actual 126.00 ( 0.98x) Window at 30 - Testing collisions - Expected 128.00, actual 122.00 ( 0.95x) Window at 31 - Testing collisions - Expected 128.00, actual 106.00 ( 0.83x) Window at 32 - Testing collisions - Expected 128.00, actual 110.00 ( 0.86x) Window at 33 - Testing collisions - Expected 128.00, actual 116.00 ( 0.91x) Window at 34 - Testing collisions - Expected 128.00, actual 137.00 ( 1.07x) Window at 35 - Testing collisions - Expected 128.00, actual 113.00 ( 0.88x) Window at 36 - Testing collisions - Expected 128.00, actual 150.00 ( 1.17x) Window at 37 - Testing collisions - Expected 128.00, actual 144.00 ( 1.13x) Window at 38 - Testing collisions - Expected 128.00, actual 125.00 ( 0.98x) Window at 39 - Testing collisions - Expected 128.00, actual 141.00 ( 1.10x) Window at 40 - Testing collisions - Expected 128.00, actual 106.00 ( 0.83x) Window at 41 - Testing collisions - Expected 128.00, actual 120.00 ( 0.94x) Window at 42 - Testing collisions - Expected 128.00, actual 144.00 ( 1.13x) Window at 43 - Testing collisions - Expected 128.00, actual 147.00 ( 1.15x) Window at 44 - Testing collisions - Expected 128.00, actual 131.00 ( 1.02x) Window at 45 - Testing collisions - Expected 128.00, actual 116.00 ( 0.91x) Window at 46 - Testing collisions - Expected 128.00, actual 121.00 ( 0.95x) Window at 47 - Testing collisions - Expected 128.00, actual 130.00 ( 1.02x) Window at 48 - Testing collisions - Expected 128.00, actual 131.00 ( 1.02x) Window at 49 - Testing collisions - Expected 128.00, actual 127.00 ( 0.99x) Window at 50 - Testing collisions - Expected 128.00, actual 140.00 ( 1.09x) Window at 51 - Testing collisions - Expected 128.00, actual 129.00 ( 1.01x) Window at 52 - Testing collisions - Expected 128.00, actual 119.00 ( 0.93x) Window at 53 - Testing collisions - Expected 128.00, actual 104.00 ( 0.81x) Window at 54 - Testing collisions - Expected 128.00, actual 104.00 ( 0.81x) Window at 55 - Testing collisions - Expected 128.00, actual 119.00 ( 0.93x) Window at 56 - Testing collisions - Expected 128.00, actual 139.00 ( 1.09x) Window at 57 - Testing collisions - Expected 128.00, actual 144.00 ( 1.13x) Window at 58 - Testing collisions - Expected 128.00, actual 143.00 ( 1.12x) Window at 59 - Testing collisions - Expected 128.00, actual 143.00 ( 1.12x) Window at 60 - Testing collisions - Expected 128.00, actual 142.00 ( 1.11x) Window at 61 - Testing collisions - Expected 128.00, actual 145.00 ( 1.13x) Window at 62 - Testing collisions - Expected 128.00, actual 142.00 ( 1.11x) Window at 63 - Testing collisions - Expected 128.00, actual 142.00 ( 1.11x) Window at 64 - Testing collisions - Expected 128.00, actual 142.00 ( 1.11x) [[[ Keyset 'Text' Tests ]]] Keyset 'Text' - keys of form "Foo[XXXX]Bar" - 14776336 keys Testing collisions - Expected 25418.13, actual 25044.00 ( 0.99x) Testing distribution - Worst bias is the 20-bit window at bit 2 - 0.011% Keyset 'Text' - keys of form "FooBar[XXXX]" - 14776336 keys Testing collisions - Expected 25418.13, actual 25482.00 ( 1.00x) Testing distribution - Worst bias is the 19-bit window at bit 31 - 0.016% Keyset 'Text' - keys of form "[XXXX]FooBar" - 14776336 keys Testing collisions - Expected 25418.13, actual 25374.00 ( 1.00x) Testing distribution - Worst bias is the 20-bit window at bit 17 - 0.019% [[[ Keyset 'Zeroes' Tests ]]] Keyset 'Zeroes' - 65536 keys Testing collisions - Expected 0.50, actual 1.00 ( 2.00x) !!!!! Testing distribution - Worst bias is the 13-bit window at bit 1 - 0.290% *********FAIL********* [[[ Keyset 'Seed' Tests ]]] Keyset 'Seed' - 1000000 keys Testing collisions - Expected 116.42, actual 107.00 ( 0.92x) Testing distribution - Worst bias is the 16-bit window at bit 14 - 0.106% Input vcode 0x46ec7f3b, Output vcode 0x36f74c49, Result vcode 0x00000001 Verification value is 0x00000001 - Testing took -1682.347296 seconds ------------------------------------------------------------------------------- [amul.sul@power2 src]$
0001-add-hash_combine-functions-in-SMHasher.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers