|
|
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшикt := PChar(Name); Здесь будет вызов метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 11:37:32 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, Попробуй хешировать не "Text", а что-то наподобие "Some text value" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 11:55:53 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, А тебя неявный try/finally не смущает? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 12:01:59 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUА тебя неявный try/finally не смущает? )) Меня ещё и передача управляемого типа в инлайновую функцию смущает :) А это более серьёзно, чем пропущеный const. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 12:18:46 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Почему смущает? Он же там как константа выступает. Если функция короткая, как у ТС, - то самое то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 12:21:14 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUПочему смущает? Потому-что на XE2-XE5 это приведёт к раздуванию кода (как раз вставка дополнительных UStrAddRef/UStrClr) из-за бага компилятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 12:25:26 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Даже в случае const? Ты уверен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 12:30:37 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUДаже в случае const? Ты уверен? В любом случае. Я бы дал ссылку на QC, но эти редиски его похерили, поэтому вот . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 12:34:27 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyВ любом случае Есть, правда, маленька оговорка. Если переданный параметр управляемого типа внутри функции чему-то присваивается, то ошибка не проявляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 12:35:46 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Очень жёстко. Правда у автора Берлин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 12:44:09 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUПравда у автора Берлин Ну вот захочет собрать на старье - сюрприз будет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 13:00:34 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
в XE2 ввели функцию вычисления хеша BobJenkinsHash, которая работает быстро и дает наромальные хеши. зачем изобретать велосипед? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 13:18:25 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
b0rkкоторая работает быстро ой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 13:31:45 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
b0rk, Человеку свойственно производить средства, позволяющие быстрее и дешевле удовлетворять его потребности. Поэтому такие вещи как оптимизации всегда будут в цене. При прочих равных клиент выберет что быстрее, даже если это быстрее на 5%. В случае хеш таблиц, вычисление хеша - одна из затратных частей, выражающаяся как в скорости функции, так и в проценте коллизий, которые она даёт. Стандартная функция неплоха, но она очень мудрёная, от того и выполняется медленнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 13:36:31 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyНяшикt := PChar(Name); Здесь будет вызов метода. Да, будет - смотрел отладку... Но, однако это быстро работает. И рассчитана как раз на inline SOFT FOR YOUНяшик, Попробуй хешировать не "Text", а что-то наподобие "Some text value" Я изучил твой метод, и в нём понятно что ты по 43 символа кушаешь. Но однако я решил на 255 + 1 символов отгенерить код в case, а это достаточно быстрее работает даже в 3 раза чем прошлый вариант мой с PChar. (С учётом того что функция не будет вызывается в 100 местах, а всего лишь в 1 ... То удовлетворяет inline) Kazantsev AlexeySOFT FOR YOUПочему смущает? Потому-что на XE2-XE5 это приведёт к раздуванию кода (как раз вставка дополнительных UStrAddRef/UStrClr) из-за бага компилятора. Ну славу богу что я НЕ разу не ставил себе их, и не собираюсь.. А вот насчёт const я тестировал. По asm коду вообще без изменений.. b0rkв XE2 ввели функцию вычисления хеша BobJenkinsHash, которая работает быстро и дает наромальные хеши. зачем изобретать велосипед? Потому что она самая медленная из всех что сегодня тут было.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 13:51:57 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, Так а какие результаты по "Some text value"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 14:15:35 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
НяшикПотому что она самая медленная из всех что сегодня тут было.. ну конечно, остальные проблемы уже решены ведь ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 14:19:41 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUb0rk,Человеку свойственно производить средства, позволяющие быстрее и дешевле удовлетворять его потребности. Поэтому такие вещи как оптимизации всегда будут в цене. При прочих равных клиент выберет что быстрее, даже если это быстрее на 5%.Юное прекраснодушие! Вот только в реальной жизни выбирают более надежное и дешёвое в сопровождении. По большому счету, юзеру до лампочки сохраняется документ 10 секунд или 11. Иначе можно получить самый быстрый продукт, которым никто не будет пользоваться из-за багов, в которых сам автор не может разобраться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 14:50:30 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUНяшик, Так а какие результаты по "Some text value"? 0.158955 сек. 455682125 Код: pascal 1. 2. 3. 4. 5. .............. 0.220384 сек. 684849697 Код: pascal 1. 2. 3. 4. 5. Но с учётом коллизий, они будут ровны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 14:59:02 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
white_niggerSOFT FOR YOUb0rk,Человеку свойственно производить средства, позволяющие быстрее и дешевле удовлетворять его потребности. Поэтому такие вещи как оптимизации всегда будут в цене. При прочих равных клиент выберет что быстрее, даже если это быстрее на 5%.Юное прекраснодушие! Вот только в реальной жизни выбирают более надежное и дешёвое в сопровождении. По большому счету, юзеру до лампочки сохраняется документ 10 секунд или 11. Иначе можно получить самый быстрый продукт, которым никто не будет пользоваться из-за багов, в которых сам автор не может разобраться Вон в notepad++ куча багов находят, и ничего... А он разрабатывается с 2003 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 15:02:41 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
white_nigger, Я же сказал при прочих равных. А так разумеется, человека в первую очередь интересует, будет ли удобный ему функционал в продукте или нет. В конечном счёте клиента интересуют потраченное время и силы. Если у двух продуктов удобство нужных ему функций равно, а скорость работы нет - то предпочтение отдадут самому быстрому из них ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 15:18:52 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, А с чего ты взял, что коллизий в твоём варианте будет меньше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 15:19:58 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUНяшик, А с чего ты взял, что коллизий в твоём варианте будет меньше? SOFT FOR YOUКоллизий немного больше, зато скорость хеша несравнимая. Хотя сейчас протестировал, и по 2 миллиарда генерируемых разных букв длиной от 5 до 30 не разу не совпали. Как и на том алгоритме.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 12:49:15 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, Ты не правильно тестируешь. Надо не чистый хеш брать, а находить остаток от деления. Если размер таблицы 1024 элемента, то вместимость принято считать 3/4, т.е. 768 элементов. Генерируешь 768 элементов, и тогда Index = Hash and 1023. Вот коллизию индексов и считай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 12:56:43 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
на самом деле по барабану и то, и другое, т.к. важны не коллизии и скорость хеш-функции в вакууме, а скорость работы хеш-таблицы в конкретном приложении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 13:11:54 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Ну так моя функция быстрее. Осталось с коллизиями разобраться ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 13:20:43 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUAleksandr Sharahov, Ну так моя функция быстрее. Осталось с коллизиями разобраться ) По теме я уже ознакомился с Zend'овским алгоритмом, и вполне удачно перенёс на Delphi (через конвертеры) https://habrahabr.ru/company/mailru/blog/308240/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 13:32:56 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Ноги, крылья... Главное — хвост! (c) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 13:34:10 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovНоги, крылья... Главное — хвост! (c) Каждый выбирает по нужде) Я выбираю Ноги! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 13:40:26 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, Ты надеешься, что он избавит тебя от коллизий? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 14:13:15 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUНяшик, Ты надеешься, что он избавит тебя от коллизий? ))) Что ты, конечно - же нет! Это рабочая лошадка с учётом коллизий и поиском нужного значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 14:15:23 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Няшик, В напиши тест сравнения производительности. Этого варианта с TRapidDictionary ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 14:17:11 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUTRapidDictionary Кстати, твой словарь на XE2 течёт. После тестов показывает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 16:18:58 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, А ты последнюю версию качал? Если да - то выложи тест, посмотрим, что там не так ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 17:09:07 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Последнюю. Выложить тест не могу. Но там кроме вставки и поиска больше ничего нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 17:31:57 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Может у тебя где-то баг. Предлагаешь мне искать там, не знаю где? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 17:36:15 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUМожет у тебя где-то баг. Сильно сомневаюсь. Это отлаженные на всех версиях дельфей юнит-тесты для библиотеки. В одном из тестов используется дефолтный словарь. Я просто подключил твой модуль и прогнал тест уже с твоим словарём. SOFT FOR YOUПредлагаешь мне искать там, не знаю где? ) Дело хозяйское. Если, вдруг, решишь, то: TDictionary<UnicodeString, Record f: Variant; End>. Количество элементов 1 млн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 17:56:05 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
... ключи - GUID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 17:57:32 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeySOFT FOR YOUTRapidDictionary Кстати, твой словарь на XE2 течёт. После тестов показывает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 18:40:50 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
white_niggerБаг у эмбы был по теме, связанный с использованием варианта в рекорде. Я использую давно и активно, проблем нет. Или это только с дженериками связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 18:48:31 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyИли это только с дженериками связано? Хотя, чего это я... С дефолтным-то словарём утечки нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 18:49:57 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeySOFT FOR YOUTRapidDictionary Кстати, твой словарь на XE2 течёт. После тестов показывает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 20:32:54 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeySOFT FOR YOUTRapidDictionary Кстати, твой словарь на XE2 течёт. После тестов показывает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 20:32:58 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Блин, кривизна браузера на WM10 - посты почему-то продублировались. А баг с вариантом в записи один хрен был. Не помню я его записывал им или не я. Отловился в DB. Причина в неправильной работе с управляемым типом в RTL. Там в каких-то случаях для копирования тупо Move вызывался, который ессно забивал на счетчик ссылок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 20:51:06 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
white_niggerПричина в неправильной работе с управляемым типом в RTL Касается только вариантного поля или вообще любого управляемого? Течёт и на записи с интерфейсным полем. Причём в обоих случаях поля не инициализированы значением, т.е. их даже тупо затри - утечки не будет. На XE8 утечка воспроизводится, на десятках уже нет. Учитывая тот факт, что разные версии компилятора обслуживаются разными ветками кода... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 21:14:45 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Я задетектил проблему. Дело в неумении компиляторов нормально обрабатывать type-var переменные. Спасибо. Апдейт запостил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 21:47:05 |
|
||
|
Варианты колизий хэш функции
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeywhite_niggerПричина в неправильной работе с управляемым типом в RTL Касается только вариантного поля или вообще любого управляемого? Я обнаружил на варианте, со строкой, больше не копал. По идее должно глючить и на других управляемых, если там будет использоваться Move для копирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2017, 09:18:11 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2042168]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
206ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
92ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 532ms |

| 0 / 0 |
