Murmur to rodzina dobrych funkcji mieszających ogólnego przeznaczenia, nadających się do zastosowań niekryptograficznych. Jak stwierdził Austin Appleby, MurmurHash zapewnia następujące korzyści:
- proste (pod względem liczby wygenerowanych instrukcji montażu).
- dobry rozkład (zdanie testów chi-kwadrat dla praktycznie wszystkich zestawów kluczy i rozmiarów wiader).
- dobre zachowanie lawinowe (maksymalne odchylenie 0,5%).
- dobra odporność na kolizje (przechodzi test tortur Boba Jenkina frog.c. Brak możliwych kolizji dla 4-bajtowych kluczy, brak małych (1- do 7-bitowych) różnic).
- świetna wydajność na sprzęcie Intel/AMD, dobry kompromis między jakością skrótu a zużyciem procesora.
Z pewnością można go użyć do haszowania identyfikatorów UUID (tak jak inne zaawansowane funkcje haszowania:CityHash, Jenkins, Paul Hsieh's itp.). Teraz zestaw bitów Redis jest ograniczony do 4 GB bitów (512 MB). Musisz więc zredukować 128 bitów danych (UUID) do 32 bitów (wartość haszowana). Bez względu na jakość funkcji haszującej wystąpią kolizje.
Korzystanie z zaprojektowanej funkcji skrótu, takiej jak Szmer, zmaksymalizuje jakość dystrybucji i zminimalizuje liczbę kolizji, ale nie daje żadnej innej gwarancji.
Oto kilka linków porównujących jakość funkcji skrótu ogólnego przeznaczenia:
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/