When you say “hash function” in a room full of developers, people tend to think of the classics: MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-OHGODPLEASESTOP, and the like — cryptographic hash functions intended for cryptographic uses.
There’s another world out there, though: non-cryptographic hashes. Sometimes you just need to figure out if you’ve already seen a string or structure. Sometimes you need a basic checksum. Sometimes you need a hash that’s just fast and can fit into a 32 bit integer.
I’ll run through the state of the art in the world of non-cryptographic hashing — what your best options are, how they compare in terms of CPU and memory usage, and how they work. Who takes it? Whose mixing function reigns supreme?
Let’s find out.
* I’m saying “five”, but realistically I’m going to cover as many modern options as I can fit into the time available. Let’s say “five plus or minus two” in reality.
Adam is a PHP Agenteer (it's totally a word) at New Relic who spends most of his time swearing at C compilers and the PHP API, usually not in that order. He notes that the quality of his swearing has gone downhill somewhat since his glory days of swearing at Python metaclasses.
In between said bouts of invective, Adam works on various open source projects, plays cricket, kayaks, and continues in his ongoing quest to find the best beer in the world. (Well, OK, it’s obviously Westvleteren 12, but it’s a good excuse to drink more beer.)
Geelong is Victoria's second largest city, located on Corio Bay, and within a short drive from popular beach-front communities on the Bellarine Peninsula as well as being the gateway to the famous Great Ocean Road
linux.conf.au is widely regarded by delegates as one of the best community run Linux conferences worldwide and is the largest Linux and Open Source Software conference in the Asia-Pacific.
Our Sponsors help make linux.conf.au become the awesome conference everyone comes back to year after year. Come see who's on board this year, or find out how to get in contact with us