|
функция hash
|
|||
---|---|---|---|
#18+
WildSeryСперва искусственно ввёл в беседу о хеше GUID, и теперь заявляешь "при чём тут хеш"? "хэш" - это что, заклинание такое? WildSeryХеш - это и есть "алгоритм, предполагающий возникновение коллизии". одно из двух, либо ты "искусственно ввёл в беседу о хеше" какие-то алгоритмы, либо GUID - это просто (также как и любой хэш) ещё один ЧАСТНЫЙ СЛУЧАЙ "алгоритмa, предполагающий возникновение коллизии". И дело именно в коллизиях, а не в волшебных словах "хэш", "MD5" и прочее ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:09 |
|
функция hash
|
|||
---|---|---|---|
#18+
Arioch"хэш" - это что, заклинание такое? Нет, это точный математический термин. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:12 |
|
функция hash
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, в контекте Unique constraint единственное, что из этого термина важно, это возникновение коллизий. и random (в том числе GUID), у которого тоже нормально возникновение коллизий, в контексте Unique constraint от хэша отличается только номинально. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:14 |
|
функция hash
|
|||
---|---|---|---|
#18+
Ariochв контекте Unique constraint единственное, что из этого термина важно, это возникновение коллизий. Нет, гораздо важнее однозначное соответствие объекту, чья уникальность контролируется. Собственно, это, в данном случае, жизненно важная характеристика. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:16 |
|
функция hash
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovоднозначное соответствие объекту обеспечивается как раз уникальностью поля, будь оно хоть хэшом, хоть целочисленным по генератору, хоть чем угодно вообще, лишь бы уникальным и постоянным для этой строки (в отличии от rdb$key) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:19 |
|
функция hash
|
|||
---|---|---|---|
#18+
Arioch> лишь бы уникальным и постоянным для этой строки А "для какой строки" GUID ? P.S. Может не надо спорить ради спора? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:29 |
|
функция hash
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Для каждой. Речь иждет про использование в unique-полях принципиально не-unique значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 16:02 |
|
функция hash
|
|||
---|---|---|---|
#18+
AriochРечь иждет про использование в unique-полях принципиально не-unique значений. Нет, не об этом идёт речь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 16:05 |
|
функция hash
|
|||
---|---|---|---|
#18+
[quot Siemargl]TonalSiemargl, Чудо в том, что алгоритм соответствует и дает тот же результат (у меня). Кстати, у тебя то не совпал результат - должно быть HASHHASH114 970 874 536 61014 974 901 068 450 - разбирайся где напортачил, не смог правильно скомпилировать 3 строки? =) После исправления ошибок ( main не может быть void ) и устранения предупреждений в твоём коде, мои результаты соответствуют тестовым: Код: plaintext 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.
Например отсюда Код: sql 1. 2. 3. 4. 5.
Так что с кодом всё в порядке. А вот с данными вполне возможны различия. Например если сервер работает с utf данными в utf-16, а не в utf-8, как у меня в исходнике. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:09 |
|
функция hash
|
|||
---|---|---|---|
#18+
Tonal, Неверный ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:25 |
|
функция hash
|
|||
---|---|---|---|
#18+
AriochWildSeryХеш - это и есть "алгоритм, предполагающий возникновение коллизии". одно из двух, либо ты "искусственно ввёл в беседу о хеше" какие-то алгоритмы, либо GUID - это просто (также как и любой хэш) ещё один ЧАСТНЫЙ СЛУЧАЙ "алгоритмa, предполагающий возникновение коллизии". И дело именно в коллизиях, а не в волшебных словах "хэш", "MD5" и прочее Я тебе ещё только один раз отвечу без тега. Разумеется, не все алгоритмы с коллизиями являются хешами. "А есть Б" не означает "Б есть А", это простейшая математика и/или логика. Прошу вернуться к теме хешей, и не писать оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:50 |
|
функция hash
|
|||
---|---|---|---|
#18+
TonalПосле исправления ошибок если делаешь хеш из 32-битного 64-битный, то меняй и константы 0xF0000000 на 0xF000000000000000 и 24 на 56 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:55 |
|
функция hash
|
|||
---|---|---|---|
#18+
dimitrхеш и так 64-битный Интересные результаты. 1. Хэш в ФБ похоже что 64-битный судя по результату, но 2. Хэш который Elf - и он же Elf64 на самом деле 32-битный 3. Elf это PJW-32 https://en.wikipedia.org/wiki/PJW_hash_function https://uclibc.org/docs/elf-64-gen.pdf стр.17 4. Если реализовать PJW-64 то результат расходится с ФБ и с ELF. И коллизии на АРЛЕТ БАЛЕТ нет и в 1251. Как то так. Я перевел на С#, чтобы не было расхождения в кодировках Код: c# 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.
Ну и наконец статья, что коллизий в ELF слишком много http://stackoverflow.com/questions/9159851/why-such-a-high-collision-rate-with-my-elf-hash-implementation ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:57 |
|
функция hash
|
|||
---|---|---|---|
#18+
dimitrTonalПосле исправления ошибок если делаешь хеш из 32-битного 64-битный, то меняй и константы 0xF0000000 на 0xF000000000000000 и 24 на 56 Вот значит, что сделано в ФБ (результат одинаков) и это _неверно_ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:02 |
|
функция hash
|
|||
---|---|---|---|
#18+
Siemargl, Таки, по ходу, разобрались, кто "не умеет компилить". :) Я, чтоб закрыть все вопросы, перегнал приведённый мной исходник в кодировку cp1251, и получил ровно твои результаты: Код: sql 1. 2. 3. 4. 5.
Так что в данной реализации рояль играет именно кодировка, а не мои "кривые ручки". :) Заменив на реализацию от dimitr получаем для 1251: Код: sql 1. 2. 3. 4. 5.
и для utf-8 Код: sql 1. 2. 3.
Т. е. для 1251 значения не меняются от реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:29 |
|
функция hash
|
|||
---|---|---|---|
#18+
Siemarglи это _неверно_ Это уже совершенно пофиг. Любое изменение этой функции сломает все базы, которые ею пользовались. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:36 |
|
функция hash
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSiemarglи это _неверно_ Это уже совершенно пофиг. Любое изменение этой функции сломает все базы, которые ею пользовались. С одной, стороны "проблемы негров" С другой - тройка еще не вышла. Не зря функция называется evlHash [ EvilHash =) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:15 |
|
функция hash
|
|||
---|---|---|---|
#18+
Н.да. В этих ваших интернетов поразительное разнообразие реализаций этого хеша для 64 бит. И все даёт разные значения на одинаковых данных. :( Вот есть же стандартизированные варианты. Тот же CRC CRC-64-ISO и CRC-64-ECMA... Или взять те же гуглянские cityhash или farmhash . И вопросов о реализации бы не возникало - всегда с тестовыми данными сравнить можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:48 |
|
функция hash
|
|||
---|---|---|---|
#18+
Пока вы тут дискутировали, я прогнал запрос по 25млн уникальных записей. Кто угадает количество коллизий? :) Делайте ставки господа... P.S. При этом 64-битная хеш-udf отрабатывает отлично. Про теоретическую возможность коллизий я не спорю, но алгоритм для функции hash выбран неудачно (имхо) Кстати, тут выше звучал намек на замену алгоритма в существующей функции, я думаю что разработчики лучше нас понимают что этого делать нельзя. Если и делать, то добавить новую функцию в 3-ке, например тот-же sha1 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 23:36 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bs, Это не алгоритм неудачный, это из-за ошибки в реализации он работает чуть лучше чем 32-битный (и то не доказано). Причем чем короче ключ - тем больше % коллизий. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 23:57 |
|
функция hash
|
|||
---|---|---|---|
#18+
SiemarglViktor_bs, Это не алгоритм неудачный, это из-за ошибки в реализации он работает чуть лучше чем 32-битный (и то не доказано). Причем чем короче ключ - тем больше % коллизий. Та я уже перечитал вашу переписку и понял. на 15млн записей - 4560 коллизий. Максимальное количество 8, там помимо текста еще и цифры (размерность). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 00:04 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsSiemarglViktor_bs, Это не алгоритм неудачный, это из-за ошибки в реализации он работает чуть лучше чем 32-битный (и то не доказано). Причем чем короче ключ - тем больше % коллизий. Та я уже перечитал вашу переписку и понял. на 15млн записей - 4560 коллизий. Максимальное количество 8, там помимо текста еще и цифры (размерность). Это достаточно мало, даже лучше чем в статье. Да и на коротких данных применять хэш невыгодно - дольше раз в несколько чем прямое сравнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 00:39 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsЕсли и делать, то добавить новую функцию в 3-ке, например тот-же sha1 тоже давно об этом думаю мечтаю ... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 10:06 |
|
функция hash
|
|||
---|---|---|---|
#18+
_Док_Viktor_bsЕсли и делать, то добавить новую функцию в 3-ке, например тот-же sha1 тоже давно об этом думаю мечтаю ... дык в чём проблема сделай и отошли патч. Время ещё есть. Одному товарищу захотелось вкрутить статистические функции. Он их сделал, отослал патч и в результате они попали в Firebird 3. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 10:53 |
|
|
start [/forum/search_topic.php?author=eeerrt&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 687ms |
total: | 856ms |
0 / 0 |