Murmur е семейство от добри функции за хеширане с общо предназначение, подходящи за некриптографска употреба. Както е посочено от Остин Епълби, MurmurHash предоставя следните предимства:
- прости (по отношение на броя на генерираните инструкции за сглобяване).
- добро разпределение (преминаване на хи-квадрат тестове за практически всички ключове и размери на сегментите.
- добро лавинно поведение (максимално отклонение от 0,5%).
- добра устойчивост на сблъсък (издържа теста за мъчения frog.c на Боб Дженкин. Не са възможни сблъсъци за 4-байтови ключове, няма малки (1- до 7-битови) диференциали).
- страхотна производителност на хардуера на Intel/AMD, добър компромис между хеш качеството и консумацията на процесора.
Със сигурност можете да го използвате за хеширане на UUID (както всички други разширени функции за хеширане:CityHash, Jenkins, Paul Hsieh и т.н. ...). Сега битсетът Redis е ограничен до 4 GB бита (512 MB). Така че трябва да намалите 128 бита данни (UUID) до 32 бита (хеширана стойност). Каквото и да е качеството на функцията за хеширане, ще има сблъсъци.
Използването на проектирана хеш функция като Murmur ще увеличи максимално качеството на разпространението и ще сведе до минимум броя на сблъсъците, но не предлага друга гаранция.
Ето някои връзки, сравняващи качеството на хеш функциите с общо предназначение:
http://www.azillionmonkeys.com/qed/hash.html
http://www.strchr.com/hash_functions
http://blog.aggregateknowledge.com/2011/12/05/choosing-a-good-hash-function-part-1/
http://blog.aggregateknowledge.com/2011/12/29/choosing-a-good-hash-function-part-2/
http://blog.aggregateknowledge.com/2012/02/02/choosing-a-good-hash-function-part-3/