Julia uses the 128 bit MurmurHash3 algorithm for the
hash function for
There are two serious issues with that:
- It is not possible to build up a hash value for a string in chunks:
julia> hash("bar",hash("foo")) 0x6d0f1600f8bd5874 julia> hash("foobar") 0x54fc7dff7f029834 julia> using CRC32c julia> crc32c("bar",crc32c("foo")) 0x0d5f5c7f julia> crc32c("foobar") 0x0d5f5c7f
It is about twice as slow as using crc32c (at least, on my machine, but most platforms have crc accelerator instructions, such as used in crc32c).
CRC-32c seems to give very similar results as far as collisions as MurmurHash3 - so it seems like it would be an advantage to switch to using it, instead of MurmurHash3.