|
string.GetHashCode() - нужна альтернатива, гарантирующая результат
|
|||
---|---|---|---|
#18+
Dima T_Novichokпропущено... Быстро, но не надежно Уже неоднократно написали что любой алгоритм хэша будет ненадежным идентификатором. Совпадение хэша двух строк означает что строки вероятно одинаковы. И вероятность тем выше, чем выше битность хэша. Т.е. строки равны при совпадении 128 бит MD5 намного вероятнее чем 32 бита GetHashCode(). Но 100% совпадения исходных строк ни один хэш не гарантирует. PS Заменил у себя функцию 64-битного хэша (брал половину MD5) на эту 20972692 . Обработка 700 тыс. строк стала быстрее на 1.4 сек. Применял разные алгоритмы создания хеша, но они только замедляют работу. А скорость в данном приложении критически важная. Увы, 1.4 сек - это очень и очень мало Решили немного пожертвовать памятью и хранить сами строки ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:34 |
|
string.GetHashCode() - нужна альтернатива, гарантирующая результат
|
|||
---|---|---|---|
#18+
_Novichok, 1. Тебе не я, а профи советовали новый топик. 2. Ссылку прочёл выше? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:34 |
|
string.GetHashCode() - нужна альтернатива, гарантирующая результат
|
|||
---|---|---|---|
#18+
_Novichokда что же вы к слову "хеш-код" прицепились? Потому что ты сам опять пишешь: _Novichokбыстро и надежно захешировать строку.то есть ты не хочешь признать неправоту при использовании термина и упорно продолжаешь его нам тулить ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:52 |
|
string.GetHashCode() - нужна альтернатива, гарантирующая результат
|
|||
---|---|---|---|
#18+
_NovichokПо делу батенька, по делу: предложите новый способ быстро и надежно захешировать строку. Судя по тому, что ты пишешь, ты сначала разберись что такое хеш вообще, прежде чем говорить про "быстро и надёжно". А то мозги колупаешь тут сам не зная чего хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 19:02 |
|
string.GetHashCode() - нужна альтернатива, гарантирующая результат
|
|||
---|---|---|---|
#18+
_NovichokDima Tпропущено... Уже неоднократно написали что любой алгоритм хэша будет ненадежным идентификатором. Совпадение хэша двух строк означает что строки вероятно одинаковы. И вероятность тем выше, чем выше битность хэша. Т.е. строки равны при совпадении 128 бит MD5 намного вероятнее чем 32 бита GetHashCode(). Но 100% совпадения исходных строк ни один хэш не гарантирует. PS Заменил у себя функцию 64-битного хэша (брал половину MD5) на эту 20972692 . Обработка 700 тыс. строк стала быстрее на 1.4 сек. Применял разные алгоритмы создания хеша, но они только замедляют работу. А скорость в данном приложении критически важная. Увы, 1.4 сек - это очень и очень мало Решили немного пожертвовать памятью и хранить сами строки 1.4 сек сэкономлено из 5.3 сек на задаче где в т.ч. чтение из БД идет. Вот замеры этого хэша 20817721 , поиск уникальных строк многопоточно идет со скоростью 200+ Мб/сек. ИМХО если тебе действительно скорость важна, то расписывай всю задачу, а не ту маленькую часть, которая по твоему мнению может ускорить решение. Кроме хэшей есть еще много чего интересного, например фильтр Блума возможно ускорит решение твоей задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 20:34 |
|
string.GetHashCode() - нужна альтернатива, гарантирующая результат
|
|||
---|---|---|---|
#18+
Программирование всегда компромисс. Если строк обрабатывается очень много, то ничего страшного, если некоторые не будут обработаны. =========== В качестве хэша для данной задачи предлагаю структуру из трех обычных хэшей и длины строки : Получить обычный кэш. Делить строку на две и делать еще два. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 11:55 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1399602]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 312ms |
total: | 471ms |
0 / 0 |