sumhash 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. -------------------------------------------------------------------------------
  2. --- Testing sumhash "sum all bytes"
  3. [[[ Sanity Tests ]]]
  4. Verification value 0x0000A9AC : PASS
  5. Running sanity check 1 ..........PASS
  6. Running AppendedZeroesTest.FAIL !!!!!
  7. [[[ Speed Tests ]]]
  8. Bulk speed test - 262144-byte keys
  9. Alignment 7 - 4.183 bytes/cycle - 11968.72 MiB/sec @ 3 ghz
  10. Alignment 6 - 5.275 bytes/cycle - 15093.01 MiB/sec @ 3 ghz
  11. Alignment 5 - 5.252 bytes/cycle - 15026.72 MiB/sec @ 3 ghz
  12. Alignment 4 - 5.326 bytes/cycle - 15238.13 MiB/sec @ 3 ghz
  13. Alignment 3 - 4.640 bytes/cycle - 13274.36 MiB/sec @ 3 ghz
  14. Alignment 2 - 5.279 bytes/cycle - 15104.00 MiB/sec @ 3 ghz
  15. Alignment 1 - 4.548 bytes/cycle - 13010.59 MiB/sec @ 3 ghz
  16. Alignment 0 - 4.286 bytes/cycle - 12262.88 MiB/sec @ 3 ghz
  17. Average - 4.849 bytes/cycle - 13872.30 MiB/sec @ 3 ghz
  18. Small key speed test - 1-byte keys - 11.81 cycles/hash
  19. Small key speed test - 2-byte keys - 9.00 cycles/hash
  20. Small key speed test - 3-byte keys - 12.99 cycles/hash
  21. Small key speed test - 4-byte keys - 14.56 cycles/hash
  22. Small key speed test - 5-byte keys - 17.63 cycles/hash
  23. Small key speed test - 6-byte keys - 15.97 cycles/hash
  24. Small key speed test - 7-byte keys - 13.58 cycles/hash
  25. Small key speed test - 8-byte keys - 17.90 cycles/hash
  26. Small key speed test - 9-byte keys - 17.69 cycles/hash
  27. Small key speed test - 10-byte keys - 16.00 cycles/hash
  28. Small key speed test - 11-byte keys - 22.95 cycles/hash
  29. Small key speed test - 12-byte keys - 22.66 cycles/hash
  30. Small key speed test - 13-byte keys - 25.08 cycles/hash
  31. Small key speed test - 14-byte keys - 23.51 cycles/hash
  32. Small key speed test - 15-byte keys - 21.85 cycles/hash
  33. Small key speed test - 16-byte keys - 18.31 cycles/hash
  34. Small key speed test - 17-byte keys - 20.90 cycles/hash
  35. Small key speed test - 18-byte keys - 17.00 cycles/hash
  36. Small key speed test - 19-byte keys - 18.00 cycles/hash
  37. Small key speed test - 20-byte keys - 20.17 cycles/hash
  38. Small key speed test - 21-byte keys - 22.60 cycles/hash
  39. Small key speed test - 22-byte keys - 24.36 cycles/hash
  40. Small key speed test - 23-byte keys - 20.83 cycles/hash
  41. Small key speed test - 24-byte keys - 18.47 cycles/hash
  42. Small key speed test - 25-byte keys - 19.38 cycles/hash
  43. Small key speed test - 26-byte keys - 19.53 cycles/hash
  44. Small key speed test - 27-byte keys - 19.01 cycles/hash
  45. Small key speed test - 28-byte keys - 19.00 cycles/hash
  46. Small key speed test - 29-byte keys - 20.00 cycles/hash
  47. Small key speed test - 30-byte keys - 22.09 cycles/hash
  48. Small key speed test - 31-byte keys - 22.88 cycles/hash
  49. Average 18.894 cycles/hash
  50. [[[ Differential Tests ]]]
  51. Testing 8303632 up-to-5-bit differentials in 64-bit keys -> 32 bit hashes.
  52. 1000 reps, 8303632000 total tests, expecting 1.93 random collisions..........
  53. 48254503 total collisions, of which 0 single collisions were ignored !!!!!
  54. Testing 11017632 up-to-4-bit differentials in 128-bit keys -> 32 bit hashes.
  55. 1000 reps, 11017632000 total tests, expecting 2.57 random collisions..........
  56. 133249344 total collisions, of which 0 single collisions were ignored !!!!!
  57. Testing 2796416 up-to-3-bit differentials in 256-bit keys -> 32 bit hashes.
  58. 1000 reps, 2796416000 total tests, expecting 0.65 random collisions..........
  59. 29743554 total collisions, of which 0 single collisions were ignored !!!!!
  60. *********FAIL*********
  61. [[[ Avalanche Tests ]]]
  62. Testing 32-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  63. Testing 40-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  64. Testing 48-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  65. Testing 56-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  66. Testing 64-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  67. Testing 72-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  68. Testing 80-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  69. Testing 88-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  70. Testing 96-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  71. Testing 104-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  72. Testing 112-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  73. Testing 120-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  74. Testing 128-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  75. Testing 136-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  76. Testing 144-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  77. Testing 152-bit keys -> 32-bit hashes, 300000 reps.......... worst bias is 100.000000% !!!!!
  78. *********FAIL*********
  79. [[[ Keyset 'Cyclic' Tests ]]]
  80. Keyset 'Cyclic' - 8 cycles of 4 bytes - 10000000 keys
  81. Testing collisions - Expected 11641.53, actual 9999005.00 (858.91x) !!!!!
  82. Testing distribution - Worst bias is the 20-bit window at bit 13 - 100.000% !!!!!
  83. Keyset 'Cyclic' - 8 cycles of 5 bytes - 10000000 keys
  84. Testing collisions - Expected 11641.53, actual 9998784.00 (858.89x) !!!!!
  85. Testing distribution - Worst bias is the 20-bit window at bit 14 - 100.000% !!!!!
  86. Keyset 'Cyclic' - 8 cycles of 6 bytes - 10000000 keys
  87. Testing collisions - Expected 11641.53, actual 9998615.00 (858.87x) !!!!!
  88. Testing distribution - Worst bias is the 20-bit window at bit 14 - 100.000% !!!!!
  89. Keyset 'Cyclic' - 8 cycles of 7 bytes - 10000000 keys
  90. Testing collisions - Expected 11641.53, actual 9998454.00 (858.86x) !!!!!
  91. Testing distribution - Worst bias is the 20-bit window at bit 14 - 100.000% !!!!!
  92. Keyset 'Cyclic' - 8 cycles of 8 bytes - 10000000 keys
  93. Testing collisions - Expected 11641.53, actual 9998309.00 (858.85x) !!!!!
  94. Testing distribution - Worst bias is the 20-bit window at bit 14 - 100.000% !!!!!
  95. *********FAIL*********
  96. [[[ Keyset 'TwoBytes' Tests ]]]
  97. Keyset 'TwoBytes' - up-to-4-byte keys, 652545 total keys
  98. Testing collisions - Expected 49.57, actual 652035.00 (13153.47x) !!!!!
  99. Testing distribution - Worst bias is the 16-bit window at bit 9 - 99.998% !!!!!
  100. Keyset 'TwoBytes' - up-to-8-byte keys, 5471025 total keys
  101. Testing collisions - Expected 3484.56, actual 5470515.00 (1569.93x) !!!!!
  102. Testing distribution - Worst bias is the 20-bit window at bit 9 - 100.000% !!!!!
  103. Keyset 'TwoBytes' - up-to-12-byte keys, 18616785 total keys
  104. Testing collisions - Expected 40347.77, actual 18616275.00 (461.40x) !!!!!
  105. Testing distribution - Worst bias is the 20-bit window at bit 9 - 100.000% !!!!!
  106. Keyset 'TwoBytes' - up-to-16-byte keys, 44251425 total keys
  107. Testing collisions - Expected 227963.15, actual 44250915.00 (194.11x) !!!!!
  108. Testing distribution - Worst bias is the 20-bit window at bit 9 - 100.000% !!!!!
  109. Keyset 'TwoBytes' - up-to-20-byte keys, 86536545 total keys
  110. Testing collisions - Expected 871784.70, actual 86536035.00 (99.26x) !!!!!
  111. Testing distribution - Worst bias is the 20-bit window at bit 9 - 100.000% !!!!!
  112. *********FAIL*********
  113. [[[ Keyset 'Sparse' Tests ]]]
  114. Keyset 'Sparse' - 32-bit keys with up to 6 bits set - 1149017 keys
  115. Testing collisions - Expected 153.70, actual 1148577.00 (7473.04x) !!!!!
  116. Testing distribution - Worst bias is the 17-bit window at bit 10 - 99.999% !!!!!
  117. Keyset 'Sparse' - 40-bit keys with up to 6 bits set - 4598479 keys
  118. Testing collisions - Expected 2461.72, actual 4598032.00 (1867.81x) !!!!!
  119. Testing distribution - Worst bias is the 19-bit window at bit 10 - 100.000% !!!!!
  120. Keyset 'Sparse' - 48-bit keys with up to 5 bits set - 1925357 keys
  121. Testing collisions - Expected 431.55, actual 1925036.00 (4460.73x) !!!!!
  122. Testing distribution - Worst bias is the 18-bit window at bit 10 - 100.000% !!!!!
  123. Keyset 'Sparse' - 56-bit keys with up to 5 bits set - 4216423 keys
  124. Testing collisions - Expected 2069.66, actual 4216102.00 (2037.10x) !!!!!
  125. Testing distribution - Worst bias is the 19-bit window at bit 10 - 100.000% !!!!!
  126. Keyset 'Sparse' - 64-bit keys with up to 5 bits set - 8303633 keys
  127. Testing collisions - Expected 8026.87, actual 8303312.00 (1034.44x) !!!!!
  128. Testing distribution - Worst bias is the 20-bit window at bit 10 - 100.000% !!!!!
  129. Keyset 'Sparse' - 96-bit keys with up to 4 bits set - 3469497 keys
  130. Testing collisions - Expected 1401.34, actual 3469296.00 (2475.70x) !!!!!
  131. Testing distribution - Worst bias is the 19-bit window at bit 10 - 100.000% !!!!!
  132. Keyset 'Sparse' - 256-bit keys with up to 3 bits set - 2796417 keys
  133. Testing collisions - Expected 910.36, actual 2796315.00 (3071.65x) !!!!!
  134. Testing distribution - Worst bias is the 19-bit window at bit 9 - 100.000% !!!!!
  135. Keyset 'Sparse' - 2048-bit keys with up to 2 bits set - 2098177 keys
  136. Testing collisions - Expected 512.50, actual 2098139.00 (4093.93x) !!!!!
  137. Testing distribution - Worst bias is the 18-bit window at bit 9 - 100.000% !!!!!
  138. *********FAIL*********
  139. [[[ Keyset 'Combination Lowbits' Tests ]]]
  140. Keyset 'Combination' - up to 8 blocks from a set of 8 - 19173960 keys
  141. Testing collisions - Expected 42799.01, actual 19173903.00 (448.00x) !!!!!
  142. Testing distribution - Worst bias is the 20-bit window at bit 6 - 100.000% !!!!!
  143. *********FAIL*********
  144. [[[ Keyset 'Combination Highbits' Tests ]]]
  145. Keyset 'Combination' - up to 8 blocks from a set of 8 - 19173960 keys
  146. Testing collisions - Expected 42799.01, actual 19173903.00 (448.00x) !!!!!
  147. Testing distribution - Worst bias is the 20-bit window at bit 11 - 100.000% !!!!!
  148. *********FAIL*********
  149. [[[ Keyset 'Combination 0x8000000' Tests ]]]
  150. Keyset 'Combination' - up to 20 blocks from a set of 2 - 2097150 keys
  151. Testing collisions - Expected 512.00, actual 2097129.00 (4095.96x) !!!!!
  152. Testing distribution - Worst bias is the 18-bit window at bit 12 - 100.000% !!!!!
  153. *********FAIL*********
  154. [[[ Keyset 'Combination 0x0000001' Tests ]]]
  155. Keyset 'Combination' - up to 20 blocks from a set of 2 - 2097150 keys
  156. Testing collisions - Expected 512.00, actual 2097129.00 (4095.96x) !!!!!
  157. Testing distribution - Worst bias is the 18-bit window at bit 5 - 100.000% !!!!!
  158. *********FAIL*********
  159. [[[ Keyset 'Combination Hi-Lo' Tests ]]]
  160. Keyset 'Combination' - up to 6 blocks from a set of 15 - 12204240 keys
  161. Testing collisions - Expected 17339.30, actual 12203459.00 (703.80x) !!!!!
  162. Testing distribution - Worst bias is the 20-bit window at bit 11 - 100.000% !!!!!
  163. *********FAIL*********
  164. [[[ Keyset 'Window' Tests ]]]
  165. Keyset 'Windowed' - 64-bit key, 20-bit window - 64 tests, 1048576 keys per test
  166. Window at 0 - Testing collisions - Expected 128.00, actual 1048050.00 (8187.90x) !!!!!
  167. Window at 1 - Testing collisions - Expected 128.00, actual 1048035.00 (8187.78x) !!!!!
  168. Window at 2 - Testing collisions - Expected 128.00, actual 1048005.00 (8187.55x) !!!!!
  169. Window at 3 - Testing collisions - Expected 128.00, actual 1047945.00 (8187.08x) !!!!!
  170. Window at 4 - Testing collisions - Expected 128.00, actual 1047825.00 (8186.14x) !!!!!
  171. Window at 5 - Testing collisions - Expected 128.00, actual 1047840.00 (8186.26x) !!!!!
  172. Window at 6 - Testing collisions - Expected 128.00, actual 1047870.00 (8186.49x) !!!!!
  173. Window at 7 - Testing collisions - Expected 128.00, actual 1047930.00 (8186.96x) !!!!!
  174. Window at 8 - Testing collisions - Expected 128.00, actual 1048050.00 (8187.90x) !!!!!
  175. Window at 9 - Testing collisions - Expected 128.00, actual 1048035.00 (8187.78x) !!!!!
  176. Window at 10 - Testing collisions - Expected 128.00, actual 1048005.00 (8187.55x) !!!!!
  177. Window at 11 - Testing collisions - Expected 128.00, actual 1047945.00 (8187.08x) !!!!!
  178. Window at 12 - Testing collisions - Expected 128.00, actual 1047825.00 (8186.14x) !!!!!
  179. Window at 13 - Testing collisions - Expected 128.00, actual 1047840.00 (8186.26x) !!!!!
  180. Window at 14 - Testing collisions - Expected 128.00, actual 1047870.00 (8186.49x) !!!!!
  181. Window at 15 - Testing collisions - Expected 128.00, actual 1047930.00 (8186.96x) !!!!!
  182. Window at 16 - Testing collisions - Expected 128.00, actual 1048050.00 (8187.90x) !!!!!
  183. Window at 17 - Testing collisions - Expected 128.00, actual 1048035.00 (8187.78x) !!!!!
  184. Window at 18 - Testing collisions - Expected 128.00, actual 1048005.00 (8187.55x) !!!!!
  185. Window at 19 - Testing collisions - Expected 128.00, actual 1047945.00 (8187.08x) !!!!!
  186. Window at 20 - Testing collisions - Expected 128.00, actual 1047825.00 (8186.14x) !!!!!
  187. Window at 21 - Testing collisions - Expected 128.00, actual 1047840.00 (8186.26x) !!!!!
  188. Window at 22 - Testing collisions - Expected 128.00, actual 1047870.00 (8186.49x) !!!!!
  189. Window at 23 - Testing collisions - Expected 128.00, actual 1047930.00 (8186.96x) !!!!!
  190. Window at 24 - Testing collisions - Expected 128.00, actual 1048050.00 (8187.90x) !!!!!
  191. Window at 25 - Testing collisions - Expected 128.00, actual 1048035.00 (8187.78x) !!!!!
  192. Window at 26 - Testing collisions - Expected 128.00, actual 1048005.00 (8187.55x) !!!!!
  193. Window at 27 - Testing collisions - Expected 128.00, actual 1047945.00 (8187.08x) !!!!!
  194. Window at 28 - Testing collisions - Expected 128.00, actual 1047825.00 (8186.14x) !!!!!
  195. Window at 29 - Testing collisions - Expected 128.00, actual 1047840.00 (8186.26x) !!!!!
  196. Window at 30 - Testing collisions - Expected 128.00, actual 1047870.00 (8186.49x) !!!!!
  197. Window at 31 - Testing collisions - Expected 128.00, actual 1047930.00 (8186.96x) !!!!!
  198. Window at 32 - Testing collisions - Expected 128.00, actual 1048050.00 (8187.90x) !!!!!
  199. Window at 33 - Testing collisions - Expected 128.00, actual 1048035.00 (8187.78x) !!!!!
  200. Window at 34 - Testing collisions - Expected 128.00, actual 1048005.00 (8187.55x) !!!!!
  201. Window at 35 - Testing collisions - Expected 128.00, actual 1047945.00 (8187.08x) !!!!!
  202. Window at 36 - Testing collisions - Expected 128.00, actual 1047825.00 (8186.14x) !!!!!
  203. Window at 37 - Testing collisions - Expected 128.00, actual 1047840.00 (8186.26x) !!!!!
  204. Window at 38 - Testing collisions - Expected 128.00, actual 1047870.00 (8186.49x) !!!!!
  205. Window at 39 - Testing collisions - Expected 128.00, actual 1047930.00 (8186.96x) !!!!!
  206. Window at 40 - Testing collisions - Expected 128.00, actual 1048050.00 (8187.90x) !!!!!
  207. Window at 41 - Testing collisions - Expected 128.00, actual 1048035.00 (8187.78x) !!!!!
  208. Window at 42 - Testing collisions - Expected 128.00, actual 1048005.00 (8187.55x) !!!!!
  209. Window at 43 - Testing collisions - Expected 128.00, actual 1047945.00 (8187.08x) !!!!!
  210. Window at 44 - Testing collisions - Expected 128.00, actual 1047825.00 (8186.14x) !!!!!
  211. Window at 45 - Testing collisions - Expected 128.00, actual 1047840.00 (8186.26x) !!!!!
  212. Window at 46 - Testing collisions - Expected 128.00, actual 1047870.00 (8186.49x) !!!!!
  213. Window at 47 - Testing collisions - Expected 128.00, actual 1047930.00 (8186.96x) !!!!!
  214. Window at 48 - Testing collisions - Expected 128.00, actual 1048050.00 (8187.90x) !!!!!
  215. Window at 49 - Testing collisions - Expected 128.00, actual 1048035.00 (8187.78x) !!!!!
  216. Window at 50 - Testing collisions - Expected 128.00, actual 1048005.00 (8187.55x) !!!!!
  217. Window at 51 - Testing collisions - Expected 128.00, actual 1047945.00 (8187.08x) !!!!!
  218. Window at 52 - Testing collisions - Expected 128.00, actual 1047825.00 (8186.14x) !!!!!
  219. Window at 53 - Testing collisions - Expected 128.00, actual 1047840.00 (8186.26x) !!!!!
  220. Window at 54 - Testing collisions - Expected 128.00, actual 1047870.00 (8186.49x) !!!!!
  221. Window at 55 - Testing collisions - Expected 128.00, actual 1047930.00 (8186.96x) !!!!!
  222. Window at 56 - Testing collisions - Expected 128.00, actual 1048050.00 (8187.90x) !!!!!
  223. Window at 57 - Testing collisions - Expected 128.00, actual 1048035.00 (8187.78x) !!!!!
  224. Window at 58 - Testing collisions - Expected 128.00, actual 1048005.00 (8187.55x) !!!!!
  225. Window at 59 - Testing collisions - Expected 128.00, actual 1047945.00 (8187.08x) !!!!!
  226. Window at 60 - Testing collisions - Expected 128.00, actual 1047825.00 (8186.14x) !!!!!
  227. Window at 61 - Testing collisions - Expected 128.00, actual 1047840.00 (8186.26x) !!!!!
  228. Window at 62 - Testing collisions - Expected 128.00, actual 1047870.00 (8186.49x) !!!!!
  229. Window at 63 - Testing collisions - Expected 128.00, actual 1047930.00 (8186.96x) !!!!!
  230. Window at 64 - Testing collisions - Expected 128.00, actual 1048050.00 (8187.90x) !!!!!
  231. *********FAIL*********
  232. [[[ Keyset 'Text' Tests ]]]
  233. Keyset 'Text' - keys of form "Foo[XXXX]Bar" - 14776336 keys
  234. Testing collisions - Expected 25418.13, actual 14776039.00 (581.32x) !!!!!
  235. Testing distribution - Worst bias is the 20-bit window at bit 11 - 100.000% !!!!!
  236. Keyset 'Text' - keys of form "FooBar[XXXX]" - 14776336 keys
  237. Testing collisions - Expected 25418.13, actual 14776039.00 (581.32x) !!!!!
  238. Testing distribution - Worst bias is the 20-bit window at bit 11 - 100.000% !!!!!
  239. Keyset 'Text' - keys of form "[XXXX]FooBar" - 14776336 keys
  240. Testing collisions - Expected 25418.13, actual 14776039.00 (581.32x) !!!!!
  241. Testing distribution - Worst bias is the 20-bit window at bit 11 - 100.000% !!!!!
  242. *********FAIL*********
  243. [[[ Keyset 'Zeroes' Tests ]]]
  244. Keyset 'Zeroes' - 65536 keys
  245. Testing collisions - Expected 0.50, actual 65535.00 (131072.00x) !!!!!
  246. Testing distribution - Worst bias is the 13-bit window at bit 0 - 99.988% !!!!!
  247. *********FAIL*********
  248. [[[ Keyset 'Seed' Tests ]]]
  249. Keyset 'Seed' - 1000000 keys
  250. Testing collisions - Expected 116.42, actual 0.00 ( 0.00x)
  251. Testing distribution - Worst bias is the 17-bit window at bit 15 - 99.976% !!!!!
  252. Input vcode 0xd424b9dd, Output vcode 0xd40f5510, Result vcode 0x00000001
  253. Verification value is 0x00000001 - Testing took 1491.679844 seconds
  254. -------------------------------------------------------------------------------