|
|
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Сколько к примеру, такой вариант получения хэша, может содержать коллизий ? И если они есть, то как коллизии будут построены ? И есть ли тема - сурсы, как можно построить тестер коллизий? Сразу скажу, что сначала взял за аналог DJBX33A но там Ez и FY дают одинаковый хэш, притом алгоритм во много раз дольше работает на 4 секунды при 1000000000 с текстом 'Text 123' Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 19:09:34 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Написал просто рандом, и нашёл из 1000 надомных от 1 до 10 символов Hello: 505 IunG9G : 505 aMPM/y : 505 VM7jy6 : 505 aq_yJ : 505 YPOHGl : 505 wDRJr* : 505 D1P5J8v : 505 r1*xu9 : 505 BRj__7 : 505 uhB61*B : 505 QxwIk : 505 q0D2QV4 : 505 f/*xSi : 505 0.005501 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 19:33:43 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
НяшикСколько к примеру, такой вариант получения хэша, может содержать коллизий ? И если они есть, то как коллизии будут построены ? И есть ли тема - сурсы, как можно построить тестер коллизий? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ShaDictionaries лежит в исходниках тут http://guildalfa.ru/alsha/node/32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 20:23:43 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
В общем, на 10000000 раз, приходиться около 13 тысяч коллизий... Вполне неплохо я считаю Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 20:24:55 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
НяшикВ общем, на 10000000 раз, приходиться около 13 тысяч коллизий... От набора ключей зависит. На последовательных ключах жуть. Подозрвеваю, что на словарях тоже будет много коллизий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 20:43:25 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyНяшикВ общем, на 10000000 раз, приходиться около 13 тысяч коллизий... От набора ключей зависит. На последовательных ключах жуть. Подозрвеваю, что на словарях тоже будет много коллизий. Соглашусь пожалуй... По вашей ссылке если заменить RawByteString на string то скорость как у моей. Да притом, без столько коллизий.. Точнее вообще не выявил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 20:49:18 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyОт набора ключей зависит. От метода подсчёта тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 20:50:23 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
НяшикПо вашей ссылке... Это не ко мне ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 20:51:39 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Тестирование хеша на рандомных строках имеет ценность примерно равную сферическому коню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 20:52:21 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, 1. Имеет смысл использовать 32-битный хеш, будет меньше нагружать кеш процессора и, следовательно, работать быстрее. 2. В тесте не видно защиты от совпадающих строк. Имеет смысл генерировать возрастающую последовательность. 3. На больших объемах имеет смысл использовать более качественный генератор случайных чисел, например, отсюда http://guildalfa.ru/alsha/node/33 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 20:55:02 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
white_niggerТестирование хеша на рандомных строках имеет ценность примерно равную сферическому коню Этот хеш и на рандомных guid'ах даёт кучу коллизий (99.9% из 10 млн.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 21:01:48 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov1. Имеет смысл использовать 32-битный хеш, будет меньше нагружать кеш процессора и, следовательно, работать быстрее. При UInt64 - 22.577654 сек. При integer 19.693001 сек. Всего лишь 2.884653 при 50000000 раз в цикле. Так что думаю, это не имеет большой роли Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Насчёт ссылки с рандомом, ShaRandomAsm - 20.962778 сек. ShaRandom - 26.529922 сек. А вот стандартный random - 18.421213 сек. В чём профит ?? Не понимаю.. function GetRandomString(const ALen: Integer): string; inline; const ValidChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-/*_АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя'; var I, len: Integer; begin Result := ''; for I := 1 to ALen do Result := Result + ValidChars[ShaRandomAsm (131) + Low(string)]; end; ... for I := 0 to 50000000 - 1 do begin str := GetRandomString(ShaRandomAsm (10 - 1) + 1); end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 21:37:29 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
НяшикПри UInt64 - 22.577654 сек. При integer 19.693001 сек. Всего лишь 2.884653 при 50000000 раз в цикле. Так что думаю, это не имеет большой роли Речь не о данном тесте. Его быстродействие нам по барабану. А в реальном использовании ты свои хеши будешь где-то хранить. И скорость их поиска будет сильно зависеть от их размера. НяшикShaRandomAsm - 20.962778 сек. ShaRandom - 26.529922 сек. А вот стандартный random - 18.421213 сек. В чём профит ?? Не понимаю.. Опять же быстродействие твоего теста нам по барабану. Важно, чтобы генерируемая последовательность была качественной, без зависимостей или, хуже того, циклов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 22:04:38 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Быстродействие отдельно оценивай. Если функция вычисления хеша без ветвлений, то единственной строки достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 22:07:37 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovИ скорость их поиска будет сильно зависеть от их размера. -__- Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 22:14:41 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, ни о чем, полностью функцию поиска покажи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 22:18:31 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovНяшик, ни о чем, полностью функцию поиска покажи она либо секретна, либо ещё не написана ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 22:40:57 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
defecatorAleksandr SharahovНяшик, ни о чем, полностью функцию поиска покажи она либо секретна, либо ещё не написана Было бы что показывать,я её вырвал из zend и через конвертер h2pas.exe приделал https://github.com/php/php-src/blob/7cba31535cbf24c0b8a24ae094afd9ed670435b0/Zend/zend_hash.c#L473 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 22:59:11 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, нам как раз еще одной хеш-таблицы не хватало в той ветке ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 23:15:55 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
В прошлый раз мы коллективно решили, что Седжвик даёт отличное распределение и приемлемую скорость. В Rapid.Generics используется модифицированный хеш Седжвика. Сначала хешатся четвёрки байт, потом миксуются результирующие 4 байта. Коллизий немного больше, зато скорость хеша несравнимая. Можешь посмотреть примеры в GetHashCode-функциях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 23:45:07 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Да ну... Чего - то не верится, что она будет быстрее чем вот это Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. А я выжил всё из функции Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. И получил 0.120553 сек выигрыша. Тестировал вот так Код: pascal 1. 2. 3. 4. RSHash - 0.402344 RSHashInline - 0.281791 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 03:24:39 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, А ты возьми для сравнения функцию из Rapid.Generics ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 09:18:12 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 09:32:13 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, на пустой строке RSHashInline обломится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 09:42:48 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovНяшик, на пустой строке RSHashInline обломится Да, точно Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. SOFT FOR YOU Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. Приятно удивлён, что она на 0.015429 сек медленнее чем RSHashInline ... Я когда первый раз на гите увидел, подумал будет всё хуже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 11:04:43 |
|
||
|
|

start [/forum/topic.php?fid=58&startmsg=39468142&tid=2042168]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
197ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 447ms |

| 0 / 0 |
