MurmurHash.net
1.0.0
C# реализация Murmur Hash 2
Использование:
MurmurHash2.Hash("mystring");
MurmurHash2.Hash(byteArray);
Я написал небольшой тест для проверки количества коллизий на 466 тысячах слов (список всех английских слов взят отсюда: https://github.com/dwyl/english-words), и количество коллизий составляет 22, что я считаю довольно хороший результат.
Стандартная string.GetHashCode()
дает 48 коллизий в списке из 466 тысяч слов.
Затраченное время (в списке из 466 тыс. слов):
Хэш | Прошедшее время | количество столкновений |
---|---|---|
МурмурХэш2 | 104 мс | 22 |
GetHashCode | 47 мс | 48 |
Для чисел от 1
до 999999
(например, почтовые индексы) результаты были следующими:
Хэш | Прошедшее время | количество столкновений |
---|---|---|
МурмурХэш2 | 234 мс | 56 |
GetHashCode | 121 мс | 0 |
GetHashCode
лучше справляется с коллизиями, но MurMur отлично справляется с более длинными текстами.